LabVIEW Idea Exchange

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

Hi,

 

My application uses a series of files to configure it self and I need to search in arrays to find which are similar to a given reference.

 

My solution is to use a for with a Match pattern VI and some logic to do the operation.

 

I believe that "Search 1D Array" would be faster than this implementation if it had the option to use wild cards ("*" and "?") as "element" input.

 

Other option would be include a flag "Exact match", by default set to TRUE to behave as is today or FALSE to stop on first occurrence of "element" in the array that contains it somewhere.

 

For example, if element = "ode" and array element = "model", it should set as a match if Exact match is set to FALSE.

 

Cheers.

Currently, whenever you filter data it is initialized with all zeroes.  If your data is fairly constant, there is a large section where the filtered value slowly goes from zero to the steady state value.  This is annoying when doing a quick look at the filtered data, because you have to rescale a graph to ignore the ramping portion of the filtered data.

 

My suggestion is to provide an option for either providing a starting value for the filter or automatically using the first value of the data being filtered.  For fairly constant data, this would eliminate the large ramp from zero.  For varying data, it would start better as well.  It seems the initial value is fairly arbitrary, so it shouldn't violate any mathematical rules.  It would be the equivalent of subtracting the first value from all the data, filtering, then adding the first value back to the filtered data.

 

Bruce

It seems like it shouldn't be too much to ask for a proper Smith chart (with markers and everything!).  Seems like it's already hiding somewhere...

Random Number (0-1) Function from Numeric palette is widely used, but it misses such important feature as Seed to initialize a pseudorandom number generator.

Seed is present in TestStand's Random() function for instance and described there as: "An optional number the function uses to determine where in the virtual sequence of random numbers the function obtains its random numbers. When you seed the Random function with the same value, subsequent calls to Random return the same sequence of numbers. If you pass a seed value of 0.0, the function generates a seed value based on the current time. If you do not pass a seed value, the function returns the next number in the current sequence of random numbers."

From an AE:

 

I confirmed with the Product Support Engineer for the PID Toolkit that the toolkit does not officially support the Mac OS X and therefore, we do not have an installer available for it. However, she also did mention that the PID Toolkit is created using LabVIEW code, so it is possible that you would be able to open VIs that come with the PID Toolkit in the Mac OS. I can submit a product suggestion for you to request Mac OS support for the PID Toolkit in the next release.

 

So here is the product suggestion. NI has gone to the trouble of building a cross platform set of VIs for PID and then stumbled in merely packaging it. Just build an installer.

Outside of comparisons, Triangles are becoming an endangered species on my Block Diagrams.  The Compound Arithmetic Node is a very handy tool, and armed with my (function preserving) RCF plugin/QD shortcut they are replacing all math triangles.  I use them a lot, and so should you.

 

One final hurdle to reaching total happiness: the process of inverting inputs and outputs is a bit awkward at best.  Right-Click, scroll down, find Invert (right in the center of the menu of course) and try not to have the muscle spasm that results in 'Remove Input'.  I would really like some type of shortcut (double-click, shift-click, ctrl-click, anything) to quickly toggle the inversion of a terminal. 

 

(I would also like to enlarge those Inversion circles while we are at it...)

 

(Ironic that the LV logo is a combination of the Add primitive and the Sequence Structure....)

 

 

It is time to put a dent in the floating point "problems" encountered by many in LV.  Due to the (not so?) well-known limitations of floating point representations, comparisons can often lead to surprising results.  I propose a new configuration for the comparison functions when floats are involved, call it "Compare Floats" or otherwise.  When selected, I suggest that Equals? becomes "Almost Equal?" and the icon changes to the approximately equal sign.  EqualToZero could be AlmostEqualToZero, again with appropriate icon changes.  GreaterThanorAlmostEqual, etc.

 

AlmostEqual.png

 

 

I do not think these need to be new functions on the palette, just a configuration option (Comparison Mode).  They should expose a couple of terminals for options so we can control what close means (# of sig figs, # digits, absolute difference, etc.) with reasonable defaults so most cases we do not have to worry about it.  We get all of the ease and polymorphism that comes with the built-in functions.

 

There are many ways to do this, I won't be so bold as to specify which way to go.  I am confident that any reasonable method would be a vast improvement over the current method which is hope that you are never bitten by Equals?.

I had the need in the past to draw isosurfaces from 3D volume data. My workaround was to export the data in xplor format (see also), then display the isosurfaces using molecular graphics software (such as UCSF Chimera). This is too indirect.

 

The code to do this directly in LabVIEW exists already in the NI Biomedical Startup Kit 3.0. Look under the section "source code":

 

  • Create isosurface from 3D volume data
  • Draw isosurface for 3D picture control
While the full biomedical startup kit requires quite a few extra toolkits to work, these two isosorface tools can work in plain LabVIEW.
My suggestion is to add these two tools (and maybe others?) to the standard 3D picture control palette of LabVIEW.

They are of general interest. 😄

I have inherited a huge LabVIEW project which is full of the following construct. Since this may be unreliable can a test be added to VI Analyzer to check for it?

 

Capture.PNG

 

 

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

We use TDMS extensively for large analysis tasks (multi Gbyte) files, and find the current two levels very restrictive, at minimum would like to see an one more level than Group and Channel. Without this, storing series of spectra requires overloading the current levels, or the Channel concept gets bastardized, by creating a new channel for each spectrum. Carsten Thomsen

This function is an excellent tool for string manipulation.  I suggest adding an input terminal for specifying the "row separator" string as shown.  This string would default to a platform dependent EOL generated by the current function.  The "delimiter (Tab)" input should also accept an empty string as suggested by others (allow empty delimiter).

 

Array to Spreadsheet String.JPG

I'd like a comparison block to tell us if a timestamp is a valid one or not.

By not valid i mean showing something like "DD/MM/YYYY" instead of mumbers, as a newly placed timestamp control does.

 

You can't just check "= 0" because actually an invalid timestamp could also be a NaN or any large positive/negative number!

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.

Quite often I find myself using a combination of Array Size + Index Array with a constant to know just one size of a multidimensional array. Wouldn't it be easier, if Array size would behave in a similar way as other array functions - depending on how many dimensions the array has, so many outputs show up. The example shows 2 dimensions, but could be expanded to more

The current set of Bessel functions supplied in LabVIEW Core only allow for real arguments and outputs. This limits the usefulness of LabVIEW in certain areas of science where complex Bessel functions are required for calculations (i.e.. acoustic modeling). The Mathscript RT module has Bessel function calls that support complex arguments so it's not like the coding doesn't exist. This is one area where LabVIEW is deficient as compared to Mathematica and Matlab and can be easily corrected without forcing the user to buy the Mathscript RT Module.  

In the real world, machine epsilon is a function of the binary representation of a floating point number.

 

The labview help describes it as:

 

 


Machine Epsilon

 

"Represents the round-off error for a floating-point number with a given precision. Use the machine epsilon constant to compare whether two floating-point numbers are equivalent."


 

 

From the term "given precision", we would assume that epsilon depends on the representation. In fact, we can right-click on the machine epsilon and select between SGL, DBL, and EXT.

 

However, if we look at the actual value, we can see that machine epsilon has the identical decimal value for SGL, DBL, and EXT. No matter what representation we chose, we get the value for DBL.

 

This is not right!

 

Suggestion: the machine epsilon must depend on the representation. Since the exact representation of EXT depends on the architecture (64, 80, 96, 128 bits total), machine epsilon for EXT needs to adapt accordingly.

 

Here's one possible way to calculate machine epsilon explicitly. Note the discrepancy for SGL and EXT.

 

 

 

 

 

Download All

Working in an GxP environment in the pharma industry, any initiative to make NI software products more compliant with the FDA guidelines would be most welcome. One such relatively simple measure would be to enable "sealing" of TDM files, such that any tampering with the data is either impossible or logged.

 

I believe I have passed this idea on to NI several years ago and I apologize if it has been implemented already.

 

Yours

 

Sebbe

Cygnus Data, Göteborg, Sweden

It would be very helpful for the programmers if the controls/indicators properties window has one more tab where we can define conditional expressions for disabling enabling the controls/indicators instead of writing case structures in BLOCK Diagram.

I would suggest that NI makes the datatypes of the "Quotient and Remainder" VI consistent.

 

If you now wire a double to the VI the outputs are of the datatype "double" however in my opinion this is not consistent with the mathematical definition of quotient, floor(x/y) and remainder, x-y*floor(x/y). The output of the VI is always a integer and should therefore also be of that datatype, thus one of the following datatypes (I64, I32, I16, I8).