LabVIEW Idea Exchange

Community Browser
Top Authors
cancel
Showing results for 
Search instead for 
Did you mean: 
Post an idea

It would be a great add-on if the graphs have got in-built measurement features/properties/methods like an oscilloscope;

 

AdarshaPakala_0-1627657945371.png

 

  1. Trigger
  2. Basic arithmetic function like Ch1-Ch2, Ch1/Ch4, etc.
  3. Event trigger based on plot value change. Example an event will be generated if Ch1 value is greater than a set value, an event will be generated if Ch2 value is greater than Ch4 value
  4. In built average plots. Example add plots like 10SMA(Ch3), 30EMA(Ch1) etc.
  5. Threshold based graph visual property change. Example configurable out-of-threshold or in-threshold plot color change.

 

 

Advantages;

  • Save time in development.
  • Integrated code will be efficient as no data unbuild/build/pass overheads.
  • Block diagram would be neat and easily readable.
  • Lightweight code.

 

Thank You

Adarsh

LabVIEW from 2006

CLA from 2014

I would be easier if Save all the logs to file option is provided. 

Proposed Event Inspector WindowProposed Event Inspector Window

Actual Event Inspector WindowActual Event Inspector Window

 

  

With the release of labview 2016 the issue of cross-platform support for video becomes critical.

 

As stated in the "features and changes" page: "NI no longer provides the 32-bit version of LabVIEW for OS X."

 

Up to now it was possible to use Christophe Salzmann's QTLib to work with video. This was great software because the very same "universal" VIs ran on Windows and OSX systems. However, this tool relied on QuickTime. QuickTime is 32-bit and will not evolve to 64-bit (it has been replaced by newer libraries), and so does QTLib.

 

Thus all the code developed with labview including cross-platform video handling cannot be maintained and developed!

 

On the other hand, video is becoming an ubiquitous feature in computer technologies, from mobile apps, to IT, to big data and deep learning. It is a strategic time to push for video on labview across all platforms. It is time for video handling VIs to appear in the standard dev package, just as jpeg or png read/write VIs were added after photos massively entered the computer world.

 

I propose the addition in the "Programming/Graphics&Sound" palette of a subset of VIs for handling video (open video file for read or write, read file frame by frame, append one frame to file, grab frames from webcam). There is no doubt that such feature will be valuable in a future labview release!

 

An add-on to the highlight execution that makes the highlight execution go into the subVIs and keeps doing highlight execution in the subVI

There are some cool methods to load VIs programatically and also to load classes programatically. There is however no way to unload a plug-in class from memory.

 

This should be a VI available in LabVIEW to do this kind of operation programatically. It can look like this:

 

Usage.png

 

 

Documentation.png

 

Adding this method to LabVIEW would be a big benefit for large architectures, I think.

When a  breakpoint has been inserted in a block diagram, and the vi stops and shows the blow diagram, frequently the breakpoint is on the edge of the screen.  This also occurs when using find/replace to find something in the block diagram, the object found is on the edge of screen, instead of centered on the screen.

It would be nice if the block diagram was centered on the object or breakpoint. 

I guess it is possible this problem is unique to me, possibly because some of the properties of the VI or the options in LabVIEW, and if so, please let me know how I can change it. 

 

The Attached code calculates the square root free Cholesky factorization (LDL'), it is very useful to decompose matrices and in my specific case, to make observability analysis within electrical distribution networks. I'm publishing it because LV counts with other kind of decompositions like the LU decomposition, very useful but for my case, the values delivered by LDL' are more accurate and easier to calculate.

 

Best regards

Match regular expression will return sub matches for any groups in your expression. So this expression: (\w+)_(\w+) would be sub match 1 and 2.

 

temp.png

 

However, LabVIEW only returns the string of the sub match, not its offset and length. This makes doing replacements on sub matches difficult and technically impossible because you then have to do a search and replace on the sub match and hope there isn't an identical string somewhere in the full string (causing an incorrect replace).

 

Other languages deal with this easily by addressing sub matches by slash codes. For example the first sub match is \1 and the second is \2. So you can say... search for this and replace \1 with that.

 

So I propose:

temp2.png

This is really just a small time-and-space-saver...

 

It would be nice if the * Array Elements functions found in the Numeric and Boolean palettes would work directly on clusters:

bd.png

Yes, the names would probably need to be changed ... but on the positive side, these functions do not even reside in the Array palette!! (Maybe they were destined for better polymorphism from the start Smiley Wink)

 

addmult.pngandor.png

 

 

It would be an added bonus if Darin's complementary idea was implemented at the same time.

I need the IMAQ Correlate function

 

imaq correlate.PNG

 

to work on a sub-pixel (super resolution) basis. For sub-pixel resolution capability, you will have to change the internal mathematics of this function for floating point calculations.

 

This function, as I am recommending for all of the Vision functions, should be made compatible with U16 image type as well.  (Currently, it is only compatible with U8 image type.)

 

When it comes to integer addition, subtraction I would like to have one more bit for input and output. This will help me to achieve N byte (width) addition or subtraction. Please see the diagram for details.

 

 

 

Some times when there is an overflow, I would like to have saturated value or sometimes modulo value. With the current behavior we get modulo addition only. if we have this bit output, we can even decide the output to be saturated value(FF) or modulo value. 

 

 

Since basic arithmetic functions are polymorphic in nature. we can add this two terminals as optional terminals.  

 

New Idea.png

If you have a log graph that has a range from 10 to 1000 there is only one label (100) between the min and max.

 

I have found this to be confusing for the end user since the minor increments change from 10 to 100, having labels would clarify the data for them.

Please implement a way to generate reports in ODF (native format of OpenOffice) as it is a file format everybody can read (.doc is not because you must buy Microsoft software).

 

 

If you do that, programmers will automatically be able to generate PDF because OpenOffice has a dos command to convert any ODF document to PDF.

I would like to see a LabVIEW implementation of the Matlab function which approximates a floating point number to a ratio of two integers, within a given tolerance.

From Matlab help:

 RAT    Rational approximation.
    [N,D] = RAT(X,tol) returns two integer matrices so that N./D
    is close to X in the sense that abs(N./D - X) <= tol*abs(X).
    The rational approximations are generated by truncating continued
    fraction expansions.   tol = 1.e-6*norm(X(:),1) is the default.
 
    S = RAT(X) or RAT(X,tol) returns the continued fraction
    representation as a string.

 

Some discussion and example code of how to implement in LabVIEW is here: http://forums.ni.com/ni/board/message?board.id=170&thread.id=18012&view=by_date_ascending&page=2

 

Background:

LabVIEW has had a recent proliferation of datatypes that essentially store the same type of data: an ordered sequence of numbers.  We now have Array, Matrix, Waveform (+ Digital Data/Waveforms), Signal (!) and Image datatypes (and perhaps one could also include Scalar).

 

The Benefits:

Each datatype is optimised for its own particular application, making it simple to perform a particular set of operations on the data.  However each appears to be developed independently.

 

The Limitations:

Each datatype has different restrictions on representation, dimension (typically only 1D or 2D), and "metadata", and most built-in functions will work on only a small subset of types.  Accessing the data as a different type usually requires copying the underlying data, with consequent limitations on speed and especially memory.  I notice these limits especially in three situations:

1) I want to use a function written for one datatype on another datatype (for example, use the Wavelet Denoising function (or even simply Square Root) on an Image),

2) I want a way to work easily with 3D images (most of the existing 2D image processing functions would have simple extensions to 3D),

3) I want to write routines that will adapt to both 2D and 3D arrays (say deconvolution).

It is certainly possible currently to work around all of these things, but it seems there should be a more cohesive approach.

 

New LabVIEW developments:

3 new developments in recent versions of LabVIEW show potential for addressing this issue: Classes, In Place Element Structure, and Data Value References (DVR).  However because they are all ideas "in development", and added on top of the existing LabVIEW rather than under the core, they only hint at possibilities rather than provide them.

 

A Possible Solution:

A low-level generic Array datatype from which all these other types are "inherited", therefore providing a single common way of addressing array-type data.  It seems like this datatype could resemble either a Class or a DVR.  It would have various attributes associated with it:

- Dimension and Size - essentially specifies the way in which indices address the array (probably always stored as a 1D array underneath)

- Metadata - e.g. t0 and dt of Waveforms, name etc of Signals, border size etc of Images, ...

The In Place Element Structure would be one way of choosing how to access the information in this variable, although it may be possible for the array information to be directly available.  Hopefully something like this would also enable the ability to "overload" existing routines, for example adding a 3D convolution to the 2D and 1D routines that already exist.

 

Some of my earlier thoughts are here, here and here.

 

PS - hope no-one said Ideas here had to be practical or reasonable!

 

As I see it, working with the IMAQ Image Typedef always results in problems for me, so I've gotten to where I try to avoid using it.  Working with IMAQ should be so much better than what it is.

 

Here are some Ideas:

 

1.  Allow IMAQ stream to disk RAW Format with a string input for a header for each Image.  You could call this vi once to write a Header to the Image, then for every call after that everything you input into the string would be written between Images. This vi should allow you to append the images.  Most of the time I DON'T want to write out to a specified Image format.  I want to stream raw Video to disk. 

 

Also, we are entering an era where lots of Image data is being dumped to disk, so the Raw stream to disk function would need to take advantage of multithreading and DMA transfer to be as fast and as effecient as possible.  The Vi should allow you to split up files into 2GB sizes if so desired.

 

See the block diagram to see how this would change the Labview code required to grab Images and save them to disk.

IMAQ Code Processing.JPG

 

 

 

Also, It would be nice to be able to specify what sort of Image that you want to use in the framegrabbing operation.  This could be set in the camera's .icd file, or by the IMAQ create.vi

Notice in the above example, I make IMAQ create.vi create U16 Images, but when the Image is output, I have no choice but to take the image in an I16 form.  I would like to have the image in its native U16 form.  I am converting the image to U16 from I16 by the "to unsigned word Integer"  I don't think that this should work, but it does, and the fact that it does helps me out. 

 

In general it would be nice to have better support for Images of all Flavors.  U16, U32 and I32 grayscale, and Double grayscale. 

 

 While you are at it, you might as well add in a boolean input (I32 bit result Image? (T/F)) to most Image math processing functions, so the coercion is not forced to happen.

 

Really though....... LETS GET TO THE POINT OF THIS DISCUSSION.....

 

The only reason that I have a problem with all this is because of speed issues.  I feel that arbitrarly converting from one data type to another wastes time and processing power.  When most of my work is images this is a serious problem.  Also, after checking out the Image Math functions they are WAYY slower than they need to be compared with thier array counterparts.

 

Solution: spend more time developing the IMAQ package to be speedier and more efficient.  For example, the IMAQ Array to Image is quite a beast and will essentially eliminate a quick processing time.  Why is this?  This doesn't need to be. NI should deal with Images internally with pointers, and simply point to the array Data in memory.  I dont see how or why that converting an array to an image needs to take so much time.

 

Discussions on this subject:

 

http://forums.ni.com/ni/board/message?board.id=200&thread.id=23785&view=by_date_ascending&page=1

 

And

 

http://forums.ni.com/ni/board/message?board.id=170&thread.id=376733

 

And

 

http://forums.ni.com/ni/board/message?board.id=200&message.id=22423&query.id=1029985#M22423

 

 

Hello:

 

I am going to be testing the 64-bit version of LabVIEW soon.  But the major code that I want to port to it also uses Vision and Advanced Signal Processing Toolkit.  Therefore, I am VERY, VERY interested in 64-bit versions of those toolkits.  I work at times with 100s of high resolution images and to effectively have no memory addressing limitation that 64-bit offers will be a significant advance for me.  Right now, I post-process with the 64-bit version of ImageJ to do some of the work that I need with huge image sets.

It would be nice to have a performant way to execute an abstract represented VI.

There are currently two generic ways to execute a VI by reference:

- abstract represented but not performant (FP required, running in UI threading)

- specific represented and performant

Executing a VI currently.png

Is it possible to provide such a functionality which combines the advantages of both solutions like this?

Executing a VI proposed.png

This means, the target VI could be handled in abstract way without coupling to the specific VI connector panel.

I am still hoping that NI will bring back the Standard Report type in the future and I know that there are many others sharing my feeling. Whatever the reason for discontinuing it, there might be another or even better way to implement good looking reports internally in LabVIEW without having to buy and rely on third party vendors.

Hello,

 

now the percentile VI calculate a table with NaN-values as the NaN-values are numbers higher than +Inf. This is incorrect.

 

The percentile VI should propage to result NaN if one of the elements of the table is NaN.

(An other solution is not consider NaN values and return as result the value greater than p percent of the data values in the array, but it would create incoherences with all other VI which propage the "NaN value")

 

Here a screenshot of the a bad response of this VI.

percentile-vi.PNG