Correlation in labview

Heya People!
I am new to labview, and would really like some help understanding the cross-correlation VI. Why do they have a biased normalisation input? what is the purpose of it?
And what does unbiased normalisation mean? The labview help is just so confusing, and I don't understand what they mean properly.
Thanks a lot  for your help

Hello,
It will depend on the data you have whether or not you need to normalize to get a more accurate comparison of the two sets. Have you seen the equations for biased and unbiased normalization? They are in the LabVIEW help in the Details section at the bottom. This section explains what normalization formula is implemented. The point of normalization is to divide out a common variable to negate its effect on the data and this allows you to better compare data of different scales.
Regards,
Anna K.
National Instruments

Similar Messages

  • Source code for 2d cross-correlation fx?

    I know this is a long shot but does anyone have the c or c++ code to compute the 2d (image) cross-correlation fx? (I know that IMAQ VISION has the cross-correlation routine but I am looking to potentially modify the 2d correlation routine to compute something called non-symmetry coefficient and would need to start with the source code). Or, labview source code for this operation would also be quite acceptable and in fact preferred!!
    Thanks,
    Don

    I don't have the 2D cross correlation in labview, but... isn't the cross correlation very similar to an FFT? In that case a 2D FFT could maybe help since it shows how the 2D FFTs are derived from 1D FFTs in labview. I attach an llb where 2D FFT is done. I don't know where I got it from, maybe I even wrote it myself sometime in the dark past (probably translating it from some piece of C source code from the 'Numerical Recipes' book).
    Maybe it is of some help for you...
    -Franz
    Attachments:
    2dfft.llb ‏46 KB

  • Calling a library function node much faster than labview code?

    Hi,  I wrote a labview routine to perform a multiple tau autocorrelation on a large array of integers.  A multi tau autocorrelation is a way to reduce the computation time of the correlation but at the expense of resolution.  You can taylor the multitau correlation to give you good resolution where you need it.  For instance, I require good resolution near the middle (the peak) of the correlation, so I do a linear autocorrelation for the first 64 channels from the peak, then I skip every second channel for the next 32, then skip every 4th channel for 32 more, then skip every 8th for 32 channels... etc.
    Originally, I wrote my own multitau calculation, but it took several hours to perform for just 1024 channels of the correlation of around 2million points of data.  I need to actually do the the correlation on probably 2 billion or more points of data, which would take days.  So then I tried using labview's AutoCorrelation.vi which calls a library function.  It could do a linear autocorrelation with 4 million points in less than a minute.  I figured that writing my code in C and calling it using a call library function node would be faster, but that much faster?
    Finally, I wrote some code that extracts the correlation data points that I would've got from my multitau code from the linear correlation function that I get from the AutoCorrelation.vi.  Clearly this is not optimal, since I spend time calculating all those channels of the correlation function just to throw them away in the end, but I need to do this because the final step of my procedure is to fit the correlation function to a theoretical one.  With say 2million points, the fit would take too long.  The interesting thing here is that simply extracting the 1024 point from the linear autocorrelation function takes a significant amount of time.  Is labview really that slow?
    So, my questions are...  if I rewrite my multitau autocorrelation function in C and call it using a call library function node, will it run that much faster?  Can I achieve the same efficiency if I use a formula node structure?  Why does it take so long just to extract 1024 points from an array?
    I've tried hiding indicators and this speeds things up a little bit, but not very much.
    I'll attach my code if you're interested in taking a look.  There is a switch on the front panel called 'MultiTau'... if in the off position, the code performs the linear autocorrelation with the AutoCorrelation.vi, if in the on position, it performs a multitau autocorrelation using the code I wrote.  Thanks for any help.
    Attachments:
    MultiTauAutocorrelate.vi ‏627 KB

    Hi,
    The C routine that AutoCorrelation.vi is using is probably a higly optimised routine. If you write a routine in LabVIEW, it should be less then 15% slower. But you'd have to know all ins and outs of LabVIEW. How data is handled, when memory is allocated, etc. Also note that the AutoCorrelation.vi has years of engineering behind it, and probably multiple programmers.
    It might even be possible that the c code uses an algorithmic improvement, like the Fast Fourier Transform improves speed on the Fourier Transform. I think the autocorrelation can be done using FFT, but that isn't my thing, so I'm not sure.
    For a fair comparation, posting the code in this forum was a good idea. I'm sure together we can get it to 115% or less of the C variant. (15/115 is just a guess, btw)
    I'm still using LV7.1 for client compatibility, so I'll look at the code later.
    Regards,
    Wiebe.
    "dakeddie" <[email protected]> wrote in message news:[email protected]...
    Hi,&nbsp; I wrote a labview routine to perform a multiple tau autocorrelation on a large array of integers.&nbsp; A multi tau autocorrelation is a way to reduce the computation time of the correlation but at the expense of resolution.&nbsp; You can taylor the multitau correlation to give you good resolution where you need it.&nbsp; For instance, I require good resolution near the middle (the peak) of the correlation, so I do a linear autocorrelation for the first 64 channels from the peak, then I skip every second channel for the next 32, then skip every 4th channel for 32 more, then skip every 8th for 32 channels... etc. Originally, I wrote my own multitau calculation, but it took several hours to perform for just 1024 channels of the correlation of around 2million points of data.&nbsp; I need to actually do the the correlation on probably 2 billion or more points of data, which would take days.&nbsp; So then I tried using labview's AutoCorrelation.vi which calls a library function.&nbsp; It could do a linear autocorrelation with 4 million points in less than a minute.&nbsp; I figured that writing my code in C and calling it using a call library function node would be faster, but that much faster?Finally, I wrote some code that extracts the correlation data points that I would've got from my multitau code from the linear correlation function that I get from the AutoCorrelation.vi.&nbsp; Clearly this is not optimal, since I spend time calculating all those channels of the correlation function just to throw them away in the end, but I need to do this because the final step of my procedure is to fit the correlation function to a theoretical one.&nbsp; With say 2million points, the fit would take too long.&nbsp; The interesting thing here is that simply extracting the 1024 point from the linear autocorrelation function takes a significant amount of time.&nbsp; Is labview really that slow?So, my questions are...&nbsp; if I rewrite my multitau autocorrelation function in C and call it using a call library function node, will it run that much faster?&nbsp; Can I achieve the same efficiency if I use a formula node structure?&nbsp; Why does it take so long just to extract 1024 points from an array?I've tried hiding indicators and this speeds things up a little bit, but not very much.I'll attach my code if you're interested in taking a look.&nbsp; There is a switch on the front panel called 'MultiTau'... if in the off position, the code performs the linear autocorrelation with the AutoCorrelation.vi, if in the on position, it performs a multitau autocorrelation using the code I wrote.&nbsp; Thanks for any help.
    MultiTauAutocorrelate.vi:
    http://forums.ni.com/attachments/ni/170/185730/1/M​ultiTauAutocorrelate.vi

  • Signal Processing and LabVIEW Expert Full Time Position – London, UK

    1x Signal Processing and LabVIEW Expert - Full Time Position – London, UK
    1.0      Description:
    As a Signal Processing/Software Engineer, you'll be part of a team that is responsible for developing applications based on large high speed data analysis for a large green energy project. Your skills must include a knowledge of Waveform analysis and understand the concepts of cross correlation, Fourier Analysis, Spectral analysis and other similar items.
    The position ideally requires someone of CLA level of LabVIEW program to act as the project lead on the programming and technical levels of the system.
    2.0      Duties and Responsibilities:
    The duties and responsibilities of this position include, but are not limited to, interacting directly with customers to program, train, inform, advise and consult in the design of their applications using the best test and measurement hardware and software by:
    ◦     Programming memory and speed efficient applications using LabVIEW and Object Oriented Programming and Event-based architectures.
    ◦     Understanding of the data acquisition side of the system and previous experience using National Instruments hardware and DAQmx
    ◦     Knowledge of Power engineering, Volts, Amps, current, Power Factor etc.
    ◦     Providing timely, accurate and effective solutions to technical problems.
    ◦     Providing guidance on the installation and working functionality of both software and hardware, including explanation of configuration settings.
    ◦     Reproducing and troubleshooting problems and incompatibilities.
    ◦     Delivering technical presentations and demonstrations to customers, colleagues and partners.
    ◦     Ability to project manage and understand how to keep on track with a Microsoft project based externally monitored project.
    3.0      Qualifications & Requirements:
    ◦     Minimum second class higher honours degree in engineering or science related field, such as electronic engineering, physics, mechatronics or computer science.
    ◦     Basic Knowledge of text based programming languages.
    ◦     Experience in either LabVIEW, minimum of three years full time and at CLA level, or capability to reach there in a short space of time with the relevant training.
    ◦     Experience in a second language such as JAVA, C and C++ is strongly preferred.
    ◦     Have a vast experience of signal processing, both digital and analog.
    ◦     Although not required, but must have skills to pass the Certified LabVIEW Developer exam and CLA within the year.
    ◦     Ability to learn new skills/languages/applications quickly (MATLAB, JavaScript, STK, etc.).
    ◦     Knowledge in instrumentation & control, and industrial automation, is strongly preferred.
    ◦     Must be able to handle multiple tasks and enjoy working with people.
    ◦     Strong problem solving skills to analyse the problem and think creatively to provide a solution.
    ◦     Excellent written, oral and presentation skills are key.
    ◦     Ability to deal effectively with customers to make them successful is essential.
    ◦     Ability to get along with others and function as a team player as well as work effectively alone.
    ◦     A proactive/can do attitude is vital and a positive outlook on problem solving.
    ◦     Legal right to live and work in the UK. Sponsorship is not available.
    ◦     Must hold a full valid UK driving license.
    4.0      Location:
    This role is located in London, UK
    5.0      Reporting:
    Signal Processing Engineers will report to the Technical Director.
    6.0      Salary:
    Competitive salary based on level of experience.
    7.0      Application:
    To apply for this position please send a copy of your CV to
    [email protected]
    Please state the job title of LabVIEW Signal Processing Engineer in the email subject.

    Hi,
    I am from india.I can able to complete the projects through the internet itself.
    Please let me know if any demos required to show my expertation. 

  • Passing control reference to subVI crashes labview

    Hi,
    using a image control (as indicator) provided by imaq Vision, I tried to pass the reference of the control to a subVI. On a computer it works and on a other (same labview version, same vision version, same os, same hardware and hardware drivers!), this crashes labview. I tried to close the control refnum at the end of the subVI, but that changed nothing to the issue. Now I use the reference as a global variable and it seems to work...nevertheless, I would like to understand what the issue and if I should remove any passing to subVI of control ref because this can potentially triggers an error. My correlated question is if this global passing is a "fake" workaround or have real chance of improving (this before going through the whole code for changing all passing of reference to subVI)
    thanks a lot

    Hi,
    thank CoastalMaineBird for your answer
    How do you know it's this issue which causes the crash?
    When I remove this parameter from and the only property node in the subVi that write to it, I have no longer any problem. Moreover, to ensure that's really the "passing", and made a global variable containing the reference to this control and use my original SubVi that do access the control through its reference number
    , and it works! In this last exemple, the only change is the way of transmitting the reference
    What LabVIEW version?
    8.0.1
    up to date according Measurement & Automation update tool
    Given that one computer works OK, and another crashes, I would say that
    you are seeing the effect of something else, not the cause. If passing
    a control ref via terminals was fatal, it would be fatal all the time.
    You have some other sort of issue, perhaps timing of the different
    machines triggers the bug, perhaps running out of memory, perhaps
    LabVIEW is corrupted on one machine.... But I don't think changing all
    your code to use globals would solve the real problem. Actually, saying that I wonder about problem of synchronisation. I know from Visual C++ that this kind of error happens if two process try to access the same control at the same time. This is typically an error changing from a computer to an other, and mutex or semaphore are the way to deal nicely with that. But does labview contains already such a securisation? If so, the global variable point on a single object and can "fell" the semaphore/mutex. But passing make a copy that will likely have two different semaphore/mutex but will point to a single control! Do someone know if I'm wrong in this idea or not?
    Thanks

  • Error in evaluating correlation query

    Hi,
    I am using 10.1.3.3.1 MLR#14 Patch (upgrade from 10.1.3.1). I have created a process where in I've created correlation sets. Basically, I am placing an Order XML on JMS queue (invoking JMS adapter) and the next activity is 'Receive' activity which is polling similar JMS queue for Order response. I have set up correlation between these two activities with the Order Id as the key. The process works fine sometimes and many a times it gets stuck while polling the JMS queue for response messages. I checked the log file and got the following error
    <2008-11-28 11:38:32,467> <ERROR> <default.collaxa.cube> <BaseCubeSessionBean::logError> Error while invoking bean "delivery": [com.collaxa.cube.engine.delivery.DeliveryCorrelationException: Failed to evaluate correlation query.
    Failed to evaluate the correlationAlias query "/ns2:ServiceBusinessMessage/ns2:Info/ns2:Attribute[ns2:Name='OrderId']/ns2:Value" on the element "oracle.xml.parser.v2.XMLElement@84f299"
    Please check your BPEL/WSDL source to make sure that property alias is defined correctly.
    ORABPEL-03813
    Failed to evaluate correlation query.
    Failed to evaluate the correlationAlias query "/ns2:ServiceBusinessMessage/ns2:Info/ns2:Attribute[ns2:Name='OrderId']/ns2:Value" on the element "oracle.xml.parser.v2.XMLElement@84f299"
    Please check your BPEL/WSDL source to make sure that property alias is defined correctly.
    I am getting the above error each time my process stucks while polling for the response messages. Also, this scenario I cannot re-produce at will as the process works fine in some cases while gets stuck for the remaining. Has anybody faced similar error? Is there any resolution as I could not find any help related to this error.
    Thanks in advance.
    Edited by: user2023115 on 28-Nov-2008 07:52

    There should be. Try putting the table name in quotes - some DBMS use single quotes, some use double quotes. For example say the table name has a space in it. Try something like:
    select * from 'a funny table';
    or
    select * from "a funny table";   (Actually, I think I'd try this one first...)
    Failing this, you have two choices: change the name of the table, or dump Access and go with a real DBMS - which you will probibly want to do anyway because it will only be a matter of time before you start hitting a performance wall. Access is particularly bad if you have more than one process making a connection to it at a time. Interms of alternatives, there are a couple really good open-source products out there, as well as no-cost versions of Oracle and SQL-Server.
    Mike...
    Certified Professional Instructor
    Certified LabVIEW Architect
    LabVIEW Champion
    "... after all, He's not a tame lion..."
    Be thinking ahead and mark your dance card for NI Week 2015 now: TS 6139 - Object Oriented First Steps

  • LabVIEW 2011 to 7.1 VI

    Hello,
    I need a conversion of my VI to the 7.1 version.
    Thank you
    Attachments:
    correlation.vi ‏19 KB

    Hi there,
    Can I please get some assistance on the following issue?
    I have one application (let's call it A), which was built on LabVIEW 7.1. Unfortunately I don't have 'VI' for it, I only have an executable file (.exe). The main purpose of this application is to read the BIN data.
    I have one more application (let's call it B), which was originally built in LabVIEW 7.1. I have a VI for it. This application creates some data files which is in a BIN format. I recently made some changes in this application using LabVIEW 2011 SP1.
    Now, when I try to read the BIN files (created by Application B), it doesn't show / read anything in Application A meaning it is not compatible.
    I remember when I had this problem earlier, I asked that person (who initially built Application B) to modify the code for me and make an executable (.exe) for application B, so in this way I was able to use it and read the BIN data in Application A.
    However, I am still keep modifying the code in Application B, so I would like to run everything smoothly on my end without bothering that person to update the code and make executable for me.
    Is there a way around this problem since I would like to modify the code on LabVIEW 2011 SP1 for future updates? What are my options here?
    I will be waiting for someone's help on it.
    Thanks!!!

  • How to open an external file in Labview?

    Hi, Who knows how to open an external file in LabView? I want to open an .UDL file(data link API) which is a dialog window letting me input correlated database information, but I dont know how to open this type of file in my LabView Program.
    Thanks.
    Red

    A UDL is technically a text file, so you could open it with "Read Characters from file", put the result string into a string control, edit it and save it back using the "Write Characters to File".
    UDLs however have their own configuration dialog embedded in the Windows OS. You can use this dialog in your LabVIEW application. The attached VI shows how to create a new UDL. You can edit an existing UDL by switching the method node to PromptEdit and wiring in an open ADO connection reference.
    Attachments:
    ConfigureDatabaseConnection.vi ‏26 KB

  • Help for a beginner creating a 2d image-processing suite in LabVIEW.

    I am a final year student and currently seeking any advice from experienced engineers with regard to my project.
    The project is to create a LabVIEW based image-processing suite, which would be able to import 2d arrays of data from microscope, plus other information (scaling, date/time, sample info) and perform the following functions:
    Visualisation – 2d & 3d, Cross-section Profile Analysis, Histogram, Fourier Transform, Auto-Correlation, Copy, Print, Save & Export, Colour Palette Edit, Zoom, Manipulate.
    Having not used LabView previously, any examples or information you may have would be of extreme use,
    Thank you in advance for any help you can give me,

    Sam,
    Most of these tools are readily available in LabVIEW when you purchase the IMAQ Vision toolkit. You just need to learn how to use them and set them up. In your case, I would strongly recommend starting with Vision Builder. You can learn how to use a number of these tools, and it may actually be sufficient for your project without writing any code. It can generate LabVIEW code as well, so it would get you started on your program.
    Bruce
    Bruce Ammons
    Ammons Engineering

  • Interfacinf of digital correlator

    Hi,
    i want to interface a hardware known as digital correlator with the computer using labview.
    digital correlator is a DSP tipe kit that provides calculation of correlation between signals.
    Do any one know more about digital correlator? How it provides output in its different channels?
    i want to see this correlation results in labview. Can anyone hepl me?please reply me.

    See http://sss-mag,com/corr.html about how they work (or google).
    How the results get back to the computer, depends on which device you have.
    NI has DSP's that can be programmed, so you can deside yourself how you get
    results.
    This is also possible with an FPGA cart from NI.
    Regards,
    Wiebe.

  • Digital image correlation vi

    Dear expert
    Is digital image correlation (DIC) algorithm for strain measurement implemented in Labview? If not,  does somebody share Labview vi for DIC? 
    I found that several free version of DIC in the web but, there is no Labview version. 
    Does anyone have any idea on this? 
    Thanks
    Solved!
    Go to Solution.

    Digital Image Correlation is not implemented in LabVIEW as part of a toolkit or module at this point. This may be something good to suggest on the LabVIEW Idea Exchange if you're interested. 
    Blake C.
    Applications Engineer
    National Instruments
    www.ni.com/support

  • How can I implement IMAQ correlation for 16bit image?

    Hi
    When using IMAQ correlate. vi in Machine vision Filter catergory, the vi only works for 8 bit source and template image case.
    16 bit source image case makes error.
    But I need 16 bit source image without losing image information, I want to use full 16 bit image correlation with 8 bit template.
    How can I implement the code in labview?
    Need help.
    Many thanks.

    Unfortunately you can't do so.
    There are some functions in the Vision Lib that only accept 8bit images. In order to use them you have to convert your image to an 8bit Image.
    Keep in mind that converting an Image to 8bit will not necessary result in a loss of data. Check your Images, it might be that you are not using the full range of a 16bit value. you might be able to use a mixture of dynamic shifting and bit shifting in order to convert an image to an 8 bit, then embedding these criterias in the image and use them to convert back to a 16bit at a later time without losing any data, or in most cases minimal precision loss. 
    If you would like to attach one of the images you are using, I can take a look at it to see if this is possible in your case.
    Good luck,
    Dan,
    www.movimed.com - Custom Imaging Solutions

  • Need help building .exe when using 3D correlation surface

    When trying to build an executable with the 3D correlation surface VI, I receive an error . . .
    Error 6 occurred at AB_Source_VI.lvclass:Close_Reference.vi -> AB_Build.lvclass:Copy_Files.vi -> AB_Application.lvclass:Copy_Files.vi -> AB_EXE.lvclass:Copy_Files.vi -> AB_Build.lvclass:Build.vi -> AB_Application.lvclass:Build.vi -> AB_EXE.lvclass:Build.vi -> AB_Build.lvclass:Build_from_Wizard.vi -> AB_UI_Frmwk_Build.lvclass:Build.vi -> AB_UI_FRAMEWORK.vi -> AB_Item_OnDoProperties.vi -> AB_Item_OnDoProperties.vi.ProxyCaller
    Possible reason(s):
    LabVIEW:  Generic file I/O error.
    9/10/2009 9:25:09 AM
    I receive the same error when creating a new project and inserting the NI example program (3D Contour Plot.vi) into the project (it is the only file in the project).
    thank you.

    Hi PikesPeakLV,
    I was able to build an application using the example that you mentioned in LV 2009 on Windows XP SP3. I would like to know more details to figure out whats incorrect.
    What are the NI Softwares installed in your system and what licenses you have?
    Which Operating System you're using?
    What is the location where you're attempting to store the build in? (Are you changing the default location?)
    Is there any settings that you are using apart from the default settings?

  • Burn a CD-R with LabView

    Hi,
    I'm trying to make backup copies (on CD-R) of some files automatically using a LabVIEW application.
    Has anybody ever done this?
    There is a DLL called wnaspi32.dll wich I think can be used to do this, does anyone has information about the protothype of the functions included in this DLL?
    Thanks.

    Hello,
    You can use dll's and make use of activeX in LabVIEW (explained further below).  More specifically, you will use a call library function node (found in the advanced palette (sub-palette of the all functions palette) to call a function in a dll.  There is an issue of correlating C or standard calling convention data types with LabVIEW data types, but their is a shipping example which outlines and programmatically launches use-case examples of each data type.  To access the shipping example (ie launch the Example Finder and locate the example)
    1. click Help -> Find Examples... in LabVIEW,
    2. click the Search tab
    3. type "dll" (without quotes) into the search field. 
    4. Double click on the keyword "dlls" or "DLLs"  (it will show up as one or the other... capitalized or not)
    5. In the list of examples that now populates, double click to open CAll DLL.vi.
    Read the instructions at the top of the example, and I think you'll find it very useful!
    For activeX in LabVIEW, you have a couple choices.  First, you can use the ActiveX Automation API in LabVIEW to control one program from another via ActiveX.  The other option you have is to embed an ActiveX control in a LabVIEW "ActiveX Container," which is available for placement on a front panel in the Containers palette.  To choose the control to embed in this container, simply right click within the container after placing it on a front panel and choose "Insert ActiveX Object...".  To find shipping examples, just follow the general procedure specified above, only type "ActiveX" in the search field (again without quotes).  For more information on these topics, see the following resources:
    ActiveX Automation in LabVIEW:
    http://zone.ni.com/devzone/conceptd.nsf/webmain/5401BE584FBAEECE862567C2006D36C7
    ActiveX Containers in LabVIEW:
    http://zone.ni.com/reference/en-XX/help/lv/71/lvhelp/Inserting_Existing_Documen/
    I hope this helps!  Repost if you have any further questions!
    Best Regards,
    JLS
    Best,
    JLS
    Sixclear

  • LabVIEW 2010 crashes often when deleting multiple diagram objects

    LabVIEW 2010f2 has been reasonably stable for me so far, but I seem to get crashes to the desktop exactly under the following conditions:
    When deleting larger sections of code (=several objects selected with the mouse, typically including bad wires in the selection, followed by hitting the delete key).
    When this happens, LabVIEW becomes unresponsive for about 10 seconds, then crashes to the desktop. This scenario is quite reproducible in a statistically significant way. While it is not 100% reproducible, I've had it happen a couple of times in a row on the same restored VI, doing basically the same delete procedure. It happened in quite a few unrelated VIs.
    This is LabVIEW 2010f2 32bit on Windows 7 64bit. There is nothing in the failure log.
    I wonder if anybody else has seen similar correlations.... Thanks!
    LabVIEW Champion . Do more with less code and in less time .
    Solved!
    Go to Solution.

    Ben J wrote:
       I'll be looking forward to a jing or reproducable code of the issue.
    OK, got one!
    Open the attached file in 2010f2. (from this discussion. All that padding and re-stripping of the 2D array is not necessary, so we try to clean up the code a bit. )
    Jing file is here.
    We delete a few things in the right, then on the left, then on the bottom left.
    At 7 seconds, LabVIEW becomes unresponsive. At 12 seconds, it crashes to the desktop.
    (I was able to record this two times in a row!)
    LabVIEW Champion . Do more with less code and in less time .
    Attachments:
    BlurBenchmark3.vi ‏211 KB

Maybe you are looking for