LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Where to get documentation for resources/*.dll libraries ?

I'm writing a vi for wich I need to take care with both memory and cpu usage and I need to compute FFT's. I've tied briefly to look at LV 7.1's included Frequency domain vi's and they all seem to call an obscure lvanlys.dll library sold with my version of LV.
I'm not familiar with calling shared libraries, but I could'nt find any documentation for this one, do any of you have an idea of where I can get it ?
0 Kudos
Message 1 of 19
(3,523 Views)
The interface to lvanlys.dll functions are simply the LV Analysis vi's. Documentation is given in the on line help and in the other LV doc (in PDF, see the Search for LabView bookshelf in the Start menu). What do you need to know exactly?
Paolo
-------------------
LV 7.1, 2011, 2017, 2019, 2021
0 Kudos
Message 2 of 19
(3,511 Views)
It's not clear what you're after here. If you just want to do an FFT you should use one of the FFT vis. Sometimes there might be a reason to use the bare dll to reduce processing overhead but looking at the structure of the fft.vi it is unlikely that this is the case here.

The help has some documentation on the vi itself and there's more in the Labview Analysis Concepts documentation.

Now if you're planning to get a copy of the dll file from somewhere...and install it on your machine without buying the full version of Labview...that would be wrong.
0 Kudos
Message 3 of 19
(3,510 Views)
> The interface to lvanlys.dll functions are simply the LV Analysis vi's.

Do you mean that all the LV Analysis vi's are just a kind of "backend" for those functions in lvanlys.dll ?

> Documentation is given in the on line help and in the other LV doc (in PDF, see the Search for LabView bookshelf in the Start menu).

Yes, I know that. Documentation for the vi's is IMHO really great. However, functions in lvanlys.dll are not documented there or am I missing something ? I have an example of use (in the corresponding vi), but no real doc, do I ? 😞

> What do you need to know exactly?

The algorithm implemented for producing power spectrum and how to use it. Of course, I'll be able to duplicate what is in LV's vi's.
0 Kudos
Message 4 of 19
(3,496 Views)
> Sometimes there might be a reason to use the bare dll to reduce processing overhead but looking at the structure of the fft.vi it is unlikely that this is the case here.

I agree with this, but I prefer to have no risk.  As for simply calling a "subvi" : I'd prefer not to.

> The help has some documentation on the vi itself and there's more in the Labview Analysis Concepts documentation.

I've read many of them over the time, even if NI doc system is so huge that it keeps on improving even if I think it can't 😉 I'd really like to make a lot of FFT's with limited hardware resources, so I'd like to avoid any overhead. Moreover, I'd like to be sure I'm as free as possible of cornercases where using single or double precision numbers make the algorithm... wrong. As I'm just not competent for that analysis, I'd prefer to refer to others analysis, this is why I'd like to get more details about implementation. Isn't this an honourable and legitimate motivation ? I think I've read that LV 8 is using BLAS / ATLAS implementation for maths, but I'm stuck with LV 7.1.

> Now if you're planning to get a copy of the dll file from somewhere...and install it on your machine without buying the full version of Labview...that would be wrong.

This is not the case. My version of LV FDS have been paid, or I wouldn't stick with the 7.1 version 😉
 This is the first time I'm suspected to do something illegal at work, nice that this remark was on a friendly tone. I guess no offence was intended, and none was taken.
0 Kudos
Message 5 of 19
(3,490 Views)

The on-line help says in part:

The Power Spectrum Sxx(f) of a function x(t) is defined as

Sxx(f) = X*(f)X(f) = |X(f)|2,

where X(f) = F{x(t)}, and X* (f) is the complex conjugate of X(f).

The Power Spectrum VI uses the FFT and DFT routines to compute the power spectrum, which is given by

where Sxx represents the output sequence Power Spectrum, and n is the number of samples in the input sequence X.

When the number of samples, n, in the input sequence X is a valid power of 2

n = 2m

for m = 1, 2, 3, …, 23,

the Power Spectrum VI computes the fast Fourier transform of a real-valued sequence using the a fast radix-2 FFT algorithm and efficiently scales the magnitude square. The largest Power Spectrum the VI can compute using the FFT is 223 (8,388,608 or 8M).

Besides this, there is the information in the shipping document 'LabVIEW Analysis Concepts'. You can find details on the fast radix-2 algorithm by doing a google search.

0 Kudos
Message 6 of 19
(3,486 Views)
> The Power Spectrum VI uses the FFT and DFT routines to compute the power spectrum,

I'm sorry, I do not see the image. What was it meant to be ? With all the due respect, this sentence is not what I see. Here (win LV 7.1 FDS), what I see is that the Power Spectrum vi computes the power spectrum by using a function called "SpectrumH" provided by a shared library named lvanlys.dll. I agree that they are more than faint probability that this comes down to a FFT algorithm, though.

> the Power Spectrum VI computes the fast Fourier transform of a real-valued sequence using the a fast radix-2 FFT
algorithm

I had overlooked this. Thank you. Let's meet google now 😉

> efficiently scales the magnitude square.
Argh ! How I do not like when a vendor sells me something "efficient" !

Thank you for your help. I still think it's a lack of the documentation system that fundamental functions are not documented.
0 Kudos
Message 7 of 19
(3,474 Views)
Well if it's really accuracy that is your concern...even if you had the algorithm you could not be sure that the implementation was optimal...apart from trusting NI that is. You would literally need to look at their code in detail to really get a sense of the accuracy.

If it were me...I would run some carefully chosen test cases to look for problems...and maybe also compare with the same calculation made with another program.


0 Kudos
Message 8 of 19
(3,465 Views)
> Well if it's really accuracy that is your concern...even if you had the algorithm you could not be sure that the implementation was optimal...apart from trusting NI that is. You would literally need to look at their code in detail to really get a sense of the accuracy.

Accuracy is only part of my motivation. As stated earlier avoiding any overhead is the other one. BTW, it by looking at NI code that I've learnt how not to make too many mistakes with LV. When implemented well, even complex algorithms are usually readable IMHO.

> If it were me...I would run some carefully chosen test cases to look for problems...and maybe also compare with the same calculation made with another program.

It's what I usually do. However I'm tending to be tired testing things I could trust. And when running test things are not actually that simple. I was lately testing the running variance computation vi's and was sceptic about results. I found an analysis of algorythms for that on wikipedia, understood it in 5 minutes and implemented a 5 lines formula node computation which gives me far less errors for the case I was looking at, using far less cpu and memory. I don't mean that NI implementations are bad, I'm really not qualified for that. But for such well known things, I'd like to be able to trust blindly the program. IMHO this is possible only if you know the implementation details and if real functions are well documented. I guess I'd be happier with LV 8, but I can't justify the upgrade 😞
0 Kudos
Message 9 of 19
(3,459 Views)
I don't think you need to make a big deal about the overhead in calling a subVI versus calling the dll directly. At least at the lower level analysis functions (i.e. power spectrum.vi), there's nothing much in there except the Call Library Function Node. I doubt that you'd even be able to measure the difference between using the subVI or not.
0 Kudos
Message 10 of 19
(3,458 Views)