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