2D-Linear Fit needed

Hello,
I have to find the best straight line in a x-y measurement array.
The "Linear Fit.vi" uses a linear regression method normal to the x-Axes which leads to bad results if the sollution would be near a vertical straight line.
e.g.: with a Pair of measurement points with:
1.: x=0 Y=+1
2.: x=0 Y=-1
I would like to get a straigth vertical line (x=0, k=inf or something which represents this), the Linear Fit.vi's result is NaN
Does someone know where to find a vi for this?
Thank you for any comments.
 Greetings
Mario Hirth

Mario Hirth wrote:
Since I use the residuum of the linear fitting to evaluate the measurement (which should represent a straight line, but I dont know in which direction), I have to be mathematically correct.
I also had a solution by iteration with: "find slope" => "turn measurement data into x-axis according to slope" => start again with finding slope => do this about 5 times etc...
in principle this works, but since I have to make a iteration with the result of this output (which is a different story), I have a iterationtask  inside an iteration task.
It works, but its neither a beatiful sollution nor a quick (means CPU-intensive).
Mathematically, this makes no sense to me. Can you explain what it is supposed to achieve?
What is the error in x and y for each data point?
LabVIEW Champion . Do more with less code and in less time .

Similar Messages

  • How to use linear fit

    Anyone here to help me how to use the linear fir vi?
    Is this vi capable of analyzing a line with a negative slope?
    What shold i input in this vi? I tried connecting my x and y arrays in this vi but still outputs nothing. Is there a bug on this vi?
    Is there a way to fit a line in my data points like what excel does?
    Thanks again for helping me numerous times.
    Brein
    Stuck again

    Brein wrote:
    This is my vi. I am using labview 7.0 and vision 7.0. This project is about finding a relationship between concentration of a certain solution and its color value using rgb space. I am already able to plot the relation ship found in sequence structure 3 of 3(assuming the first sequence is 0 of 3). How to put a linear fit in my data points?
    So you need to do a global fit to three datasets (R, G, & B). Since you seem to deal with a greyscale image, it is probably sufficient to fit only a single channel. What function do you use in excel?
    Sorry, I don't have the vision module. Can you strip down your VI as follows:
    create indicators on the three orange arrays in frame #2. (right-click wires, create indicator)
    Run the VI so the indicators contain data.
    Turn the indicators into diagram constants (right-click..change to constants). Wires will be broken, leave them broken!
    Save the VI under a new name and attach it again.
    I am quite busy today, maybe I can look at it tonight if nobody else gives a solution.
    LabVIEW Champion . Do more with less code and in less time .

  • Linear Fit errors

    I am trying to make use of the "Linear Fit" and "Linear Fit Coefficients" vi's, but I am getting errors despite inputting what I thought was correct. If I connect my two 1D data arrays to the 'X' and 'Y' input terminals then I get the error -20002.  If I connect empty arrays, I get the error -20006.  I'm leaving all the other inputs unconnected.
    In looking for a solution to this, I came across something altenbach said a few years ago:
    altenbach wrote:
    Some possible errors that can occur with linear fit (but they would generated different error codes):
    You have only a two-column file. In this case you need columns 0 and 1 (column 2 does not exists) error -20002
    You have only one row, thus only one data point. error -20006.
    I only half-understand what he meant, and/or how it would apply to what I'm doing wrong.  Can anyone help me out here?
    Never say "Oops." Always say "Ah, interesting!"
    Solved!
    Go to Solution.

    Please attach code.
    -20002 states that the input sequences must be the same size.  So X and Y need to be the same length.  Verify this first.
    -20006 states that the input lengths must be at least 2 elements.  So passing in empty arrays makes perfect sense here.
    There are only two ways to tell somebody thanks: Kudos and Marked Solutions
    Unofficial Forum Rules and Guidelines

  • Linear fit without professional version. Workarounds anyone?

    Hey, I'm trying to do some analysis and need to find the slope of a curve.  The drivers I have are trying to access the linear fit function but I don't have the pro version so I can't use it.  Anyone know of a free workaround VI possibly or any other solution?  
    Thanks

    Hi acolbourn
    The linear fit just implements the least squares algorithm, this is pretty simple. 
    You can read how this algorithm works here:
    http://en.wikipedia.org/wiki/Least_squares
    What parameters does the driver call the function with just X and Y as input, and best fit as output?
    Regards, 
    Anders Rohde

  • Linear Fits

    I have some data that should follow a straight line, but there are spikes in
    it. Rather than manually editing the data to remove the spikes, which is
    tedious and time consuming, I wanted a function that would intelligently
    decide which datapoints were bad and zap them.
    Initially I thought this would be trivial; do the fit, calculate residuals
    and zap all data lying further than one standard deviation from the line.
    However, the spikes are sufficiently large that they can skew the linear
    fit, and hence the determination of which points to drop. Doing a threshold
    zap on the raw data isn't adequate since the values of the data aren't
    sufficiently consistent between sets.
    I tried differentiating the residuals- and in another attempt the straight
    line data- reasoning that the differential should be constant everywhere
    other than around the spike, and a simple thresholding would then tell me
    which data to kill. Again no success; the data either side of the spike are
    far from the constant line, the data of the spike itself are not.
    The approach I've settled with is to do the linear fit on all the data, get
    the MSE, zap the first datapoint and get the MSE, replace the first and zap
    the second and so on until I have a table showing the effect of removing
    each individual datapoint on the overall fit quality. I then find the most
    significant datapoint, see if the effect of removing that gives a percentage
    decrease in the MSE better than a user defined threshold, and then repeat
    the process until either there are no more significant gains to be made or a
    limit for the percentage of data that can be dropped is reached. To avoid
    zapping down to two datapoints, I've chosen 50% as the maximum number of
    points to lose and 50% as the increase in fit quality required to justify
    the loss of a data point.
    This works well, but it means that if there are n datapoints, n linear fits
    must be carried out for each data point dropped. Execution time is therefore
    going to increase exponentially with the data size, which always worries me
    slightly.
    One thing I've already thought of is the possibility of zapping more than
    one point per iteration; however the fit changes so much when a single
    outlier is removed that I suspect valid data may be lost this way.
    Does anyone have any other suggestions to zap erroneous data without zapping
    good data? This technique is fine for small datasets, and I guess the
    threshold-based zapping is fine for large datasets, where the loss of a few
    points changes the fit only very little, but if I ever need to do this on
    data in the intermediate region I might have to start playing about again.
    Craig Graham
    Physicist/Labview Programmer
    Lancaster University, UK

    I have a question about your approach:
    Does "ZAP" mean that you are going to completely "delete" the outlier point or to "modify" it? Be advise that if you completely delete an outlier, your resulting data will be shifted to the right from that point, and thus your resulting data will no longer resemble a straight line.
    www.vartortech.com

  • How should I set up my VI so that I can use the linear fit coefficient data analysis program, when my values are coming from while loops within a sequence structure?

    I'm attempting to create a calibration program, using the printer port, and a Vernier Serial Box by modifying a calibration program designed for the serial box.
    There are six calibration points, and to collect them, I have it controlled by while loops so that the numbers are taken when a button is pushed, and this is inside a sequence structure so that I can get the six different points. I feed these numbers into two different arrays (for x and y values) and then try to use the linear coefficient analysis on these points, but the values for the slope and intercepts it returns are not correc
    t.
    If I cut out the array and coefficient analysis, and feed the same numbers in directly without the while loop and sequence structures, it produces the proper values... I don't know why the numbers it is producing are different, and I'd really like to know.
    Thanks,
    Karinne.

    I would use a data manager sub-vi that would be called by each from of the sequence structure that produced a data point. The data manager sub-vi could auto append new items or could place items in a specific entry of an array. Later on when you want to calculate the linear fit, call the sub-vi to return the array of values.
    Stu

  • Bug in coefficien​ts output of General LS Linear Fit LabView 8.5.1?

    Hi
    I compiled my application from LabView 7.1.1 to LabView 8.5.1. This application use the "General LS Linear Fit.vi". I noticed that there differences in the calculation of the coefficients.
    There are attached two files, one comiled in LV7.1.1 and the other with LV 8.5.1, with two different results. Please make sure you open this files with the correct version.
    If I change in "General LS Linear Fit.vi" the link to the lvanlys.dll of the LV7.1.1 version, the calculations are correct.
    Any help would be appreciated, thanks.
    Fil

    Hi André
    I think the results in the 8.5 Version are completely wrong. If the result would deviate a few percent one could say that the new version could be more exact. But not like that.
    Fil
    Attachments:
    calc_71.JPG ‏154 KB
    calc_85.JPG ‏184 KB

  • Linear Fit using Bisquare method fails on certain data sets.

    I noticed some behavior that I didn't understand, so I thought I'd post it.  I'm using Linear Fit.vi in LabVIEW 8.2 to calculate a slope and offset.  This VI has a method input that accepts an enum.  When I select the "Bisquare" method on some data sets I get error -20104 (Analysis:  Input parameters have at least one NaN element).  I think that if some data sets don't work with certain algorithms, this should be mentioned in the help.  This took quite some time to track down.
    Here is an example of a data set that doesn't work with Linear Fit.
    X: Y:
    0.40336656 -4.04062388
    0.20171238 -2.01997989
    0.00072204 -0.00951483
    -0.20006598 1.99094268
    -0.39979904 3.99578023

    I can reproduce the problem.
    Interestingly, it works fine if you increase the tolerance input a little bit, e.g. to 0.0004 (from the default 0.0001). It also starts working if you change the data a little bit.
    Curious that it works on the Mac. There must be something pathalogical with this exact data set. Maybe it cause an unhandled division by zero in one of the iterations.
    LabVIEW Champion . Do more with less code and in less time .

  • Linear fit between two cursors from a signal from a NI-instruments via DAQ-Assistant

    Hi ! 
    I'm currently having som problem with my labview code. I'm trying to make regression on a specific part of my graph. The graph consist of a signal gathered from a NI cDAQ-9178. Currently I can get the live data in a graph (Raw Signal) and then  "zoom in" to the part of the graph that im intrested in by two cursors and then display the results in a new graph (Adjusted Signal). Now a want to make regresion in the new graph. How can i do this the best way ? 
    To be noted I'm a beginner of labview so my code maybe a bit off.
    Best regards Maurlind
    Solved!
    Go to Solution.
    Attachments:
    Rawsignal test.vi ‏245 KB
    rawsignal test.png ‏64 KB

    Hi maurlind,
    I got it, the function that derived the linear fit couldn't handle that large numbers on the x-axis. I edited the VI so that the large number is suctracted for the fit, i.e. the array will now begin at zero time for the fit. It will not affect your plots though, only the algorithm .
    Try it now with the files I provided. The file "pm_mod2_Rawsignal test.vi" should be used with "test3.lvm" (your data). The file "pm_mod3_Rawsignal test.vi" is the same as "pm_mod2_Rawsignal test.vi", but it is arranged to work with the simulated data. The file "test3.lvm" is your data, but the file is slightly edited to work on my system.
    Edit "pm_mod3_Rawsignal test.vi" to fit with your acquired signal as you did with the first file you got from me.
    Attachments:
    1412794.zip ‏483 KB

  • Linear Fit not run with NaN

    Hi guys.
    I am trying use Linear Fit to made the best fit of temperature acquisition, but during the acquisition i acquire some NaN data.
    I can plot the temperature graph, but i cant plot or receivo soma data from Linear Fit.
    My code is below, in LV2010.
    Can anyone help me?
    Icaro Kossmann
    LabVIEW 8.6 Newbie.
    Brazil
    Solved!
    Go to Solution.
    Attachments:
    novo fit 16-04.vi ‏19 KB

    Follow my VI.
    Icaro Kossmann
    LabVIEW 8.6 Newbie.
    Brazil
    Attachments:
    Linear_fit_Teste,_array_constante_15-04-2014[1].vi ‏16 KB

  • Implementation of linear fit between two cursors

    Hi,
    I am trying to implement a linear fit between two cursors, as I am using total of 4 cursors. I would like to implement linear fit between cursor 2&3. Please help me how to implement it and to find a slope. I am also attaching my code.
    With Regards
    Phani kiran
    Solved!
    Go to Solution.
    Attachments:
    Linear Fit Implementaion.PNG ‏44 KB

    phanikiran wrote:
    Hi koen,
    Now I would like to merge both graphs i.e., Bestfit and XY Graph (in the block diagram). Can you suggest me, I have tried with build array and concenate Inputs function, but no use. Dont mine as I  am new to Labview. Thanks in advance.
    First, get rid of the Express XYGraph subVIs and use the "real" XY graph VIs. The Express ones get you going faster for simple things, but your options are limited.
    Take your X and Y arrays for both your original points and the best fit points (just two points, right?) and combine them into clusters of arrays (instead of feeding them into the XY graph). Then combine these into an array and feed it into your graph. It's all outlined in the XY Graph section of the LabVIEW help file.
    The LV Help File is your friend, learn to use it. It gets lonely if you don't look in on it once in a while.
    Cameron
    To err is human, but to really foul it up requires a computer.
    The optimist believes we are in the best of all possible worlds - the pessimist fears this is true.
    Profanity is the one language all programmers know best.
    An expert is someone who has made all the possible mistakes.
    To learn something about LabVIEW at no extra cost, work the online LabVIEW tutorial(s):
    LabVIEW Unit 1 - Getting Started
    Learn to Use LabVIEW with MyDAQ

  • Bug in MSE output of General LS Linear Fit.vi?

    Hi: In the General LS Linear Fit.vi, output MSE. Help for the vi describes the formula as (I attached a picture, but I'm not sure if it will appear in the post), but it looks like something is missing, because if I use the formula to my input values, I get a match only if all input Standard Deviations are 1's. As Standard Deviations increase, this formula gives me smaller MSE, higher MSE if Standard Deviations decrease; but I noticed MSE of the vi doesn't change so much, and every time all input Standard Deviations have the same value (no matter how large or small they are), MSE returns to the same original value.
    According to the formula, MSE is inverse proportional to the square of Standard Deviations, no way to return to original value if they're changed. Is this formula correct or shuld it be different?
    Attachments:
    untitled6.jpg ‏5 KB

    Hi, Karunya:
         I actually rechecked my stuff, and I found that the formula that Mehak_D showed me in
    MSE formula.JPG
    is correct and really works. and the one I found in one of the LV 5 help files were wrong
    untitled6.jpg
    I'm attaching 2 pictures showing the LV5 Help file where I found it, as well as the Index where I clicked to open it. Just let me know if the formula were corrected in the Help file for later LV versions.
         Thank you very much.
    Attachments:
    General LS Linear Fit Theory.jpg ‏96 KB
    Help Index.jpg ‏34 KB

  • Bug sur la fonction "Linear Fit" entre LW 8.0 et LW 2009

    Bonjour,
    nous rencontrons des différences sur le résultat de la fonction LINEAR FIT.vi (avec méthode bisquare)
    Le même programme, un compilé sous LabVIEW 8.0 et l'autre sous LabVIEW 2009, donne des résultats différents. 
    Je ne trouve pas les corrections qui ont pu être apportées sur cette fonction entre les différentes versions de LabVIEW.
    Comment être certain que la fonction donne de bons résultats ? Celle sous LabVIEW 8.0 est-elle correcte ?
    Pour info, le résultat sous Lw 2014 est le même que sous LabVIEW 2009.
    Merci

    Sorry for the delay.
    I added two sreenshots with the same function and the same datas: the first example runs on LW8.0 and the 2nd runs on LW2014.
    We encounter differences on results (slope, interception ... etc)
    Thank you for your help 
    Attachments:
    RegLin_8.0.JPG ‏132 KB
    RegLin_2014.jpg ‏144 KB

  • Weight values in weighted linear fit

    I am using Labview 8.5, which has the weighted linear fit vi. 
    What values are acceptable as weights? In other fitting software the weights expected are usually standard deviations of each value. It seems to me that the weights expected by the weighted linear fit vi are in a range from 0 to 1, corresponding to how much you value that point. 
    What is the vi actually looking for? Some value between 0 and 1 or the standard deviation for each particular value of the dependent variable? 
    I can't tell just by reading the help or looking online. 
    Solved!
    Go to Solution.

    Prior to LabVIEW 8.0, there was a "standard deviation" input instead of a weight input for the nonlinear fit function, but internally the code was basically the same (It was immediately converted to a weight internally).
    Weight is better and more convenient because you can completely disregard portions of the data by setting the weight to zero, while it would be weird trying to set the standard deviation to infinity to get the same effect (well, it would not work unless the function can detect that special case and adapt to it).
    Since it is mathematically very simple to translate an standard deviation into a weight, you can do that easily yourself.
    LabVIEW Champion . Do more with less code and in less time .

  • Confidence bounds for non-linear fit

    Is it possible to get the confidence bounds for the fitted coeficients when using non-linear fits?

    Hello Dahl
    Do you mean like Upper Bound and Lower Bound output terminals of NI_Gmath.lvlib::Nonlineat Curve fir intervals.vi?
    Message Edited by Eirikur on 01-09-2008 01:25 PM
    Regards,
    Eirikur Runarsson
    Platinum Applications Engineer
    NI Denmark

Maybe you are looking for

  • What problem could be in script

    Hi, I have a script which created in EN, but can be printed in DE, now I found if I first print in EN, then the payment terms will be correct, but if I first print in DE, then the payment terms second line will disppear, why it happened like this, ho

  • Is it possible to create a 'layer' over the top of a PDF in Captivate?

    I am trying to integrate a 3dpdf within captivate 8 for a software training program, for this it is important to retain functionality to the pdf menu, Captivate handles this well : ) HOWEVER on importing the pdf it becomes clear that the pdf 'trumps'

  • What is different between using Scriptlet and VBA

    Did any know what is different between using "Insert test Scriptlet" and VBA (on Cusom Page Programmability node)?

  • Integration services backward compatibility

    Hoping someone will know the answer to this. Is the version of Integration Services on Hyper-V 2012 R2 backwards compatible with Hyper-V 2012? The reason I ask is that we are in the process of moving VMs across Hyper-V clusters due to a company buyou

  • Which toString() method does System.out.println() call?

    Which toString() method does System.out.println() call? I know that if I did something like System.out.println( new myClass() ) that the toString being called would be that of the myClass class. My initial thought about this was that System.out.print