¿ªÔÆÌåÓý

Re: .MEAS Failure


 

¿ªÔÆÌåÓý

On 25/02/2025 12:55, eewiz via groups.io wrote:
Tony, I was not out to prove that 2.000000000 volts never happens.
I was out to prove that 2.000000000 volts did not happen in my case.
So that I could therefrom propose that the test ".MEAS = something FALL=1" in my case does not test for equality to something because that something does not exist.
Until someone can show me proof of interpolation to obtain the .MEAS result in my case, I will assume that it is actually doing the more efficient test for a value that was more than something and now has become less than something.
?
When it comes to plotting, that's a different story.
If your pixels are a certain size and your two data points span more than two pixels then interpolate to find the missing pixel coordinates.
But would you interpolate 100 new coordinates if you know you only have to locate 14 pixels between the given data points.
No, that would be inefficient to crank an interpolation a 100 times to fix the coordinates of 14 missing points.
?
The same logic applies to using interpolation at all, when the task at hand is to analyse the data stream to find any data value greater than something followed by any data value less than something.
That simply requires if(X <= something && priorX >= something) to be true [C syntax not precisely correct] which is considerably simpler than interpolation.
How would you know how many times to turn the interpolator crank to find if any interpolated point could be found that was exactly 2.00000000 volts so that it could be compared for equality to 2.
?
I predict that the .MEAS statement never tests for equality.
Even in this example from the help file, I posit that:

.MEAS TRAN res2 FIND V(out)*I(Vout) WHEN V(x)=3*V(y)

Print the value of the expression V(out)*I(Vout) the first time the condition V(x)=3*V(y) is met. This will be labeled res2.

Does not ever test that V(x) becomes exactly equal to 3*V(y).
It does this; "if((V(x) <= 3*V(y) && priorV(x) >= 3*V(y) || (V(x) >= 3*V(y) && priorV(x) <= 3*V(y)))" == true" then it would be known that the data has passed through the point 3*V(y) without ever having to resort to a test of equality between floating point numbers.
Nobody ever said that LTspice tests for equality. It can't if the data doesn't exist. LTspice uses interpolation to estimate it. I thought that had been made clear. The closer the data points, the better the estimation is likely to be. You can, of course, choose to believe anything you wish to.

BTW, in case you hadn't realised, when using the waveform cursor, pressing the ¡ú and ¡û keys advances or retards the cursor position to the next actual data point. Any reading of the cursor position between data points is also interpolated. Note that if you don't have .option plotwinsize=0 enabled, not all actual analysis data points are stored in the .raw file, and therefore cannot be displayed or used for interpolation. The line display appears to be a spline fit, but zooming-in shows this to be realised as a series of linear approximations.

--
Regards,
Tony

Join [email protected] to automatically receive all group messages.