midcross() - Signal Processing
C = midcross(X) returns
a vector, C, of time instants where each transition
of the input signal, X, crosses the 50% reference
level. The sample instants correspond to the indices of the input
vector. Because midcross uses interpolation to
determine the crossing instant, C may contain
values that do not correspond to sampling instants. To determine the
transitions, midcross estimates the state levels
of X by a histogram method. midcross identifies
all intervals which cross the upper-state boundary of the low state
and the lower-state boundary of the high state. The low-state and
high-state boundaries are expressed as the state level plus or minus
a multiple of the difference between the state levels. See State-Level Tolerances.C = midcross(X,FS) specifies
the sample rate, FS, in hertz as a positive scalar.
The first sample instant corresponds to t=0.
Because midcross uses interpolation to determine
the crossing instant, C may contain values that
do not correspond to sampling instants.C = midcross(X,T)
specifies the sample instants, T, as a vector
with the same number of elements as X. Because midcross uses
interpolation to determine the crossing instant, C may
contain values that do not correspond to sampling instants.[C,MIDLEV]
= midcross(...) returns the waveform value corresponding
to the mid-reference level. C = midcross(X,Name,Value) returns
the time instants corresponding to mid-reference level crossings with
additional options specified by one or more Name,Value pair
arguments.midcross(...) plots the signal and marks
the location of the mid-crossings (mid-reference level instants) and
the associated reference levels. midcross also
plots the state levels with upper and lower state boundaries.
Syntax
C = midcross(X)C = midcross(X,FS)C = midcross(X,T)[C,MIDLEV]
= midcross(...)C = midcross(X,Name,Value)midcross(...)
Example
Mid-Reference Level Instant of Bilevel WaveformOpen This ExampleAssuming a sampling interval of 1, compute the mid-reference level instant of a bilevel waveform. Plot the result.load('transitionex.mat','x')
midcross(x)
ans =
21.5000
The instant at which the waveform crosses the 50% reference level is 21.5. This is not a sampling instant present in the input vector. midcross uses interpolation to identify the mid-reference level crossing.Mid-Reference Level Instant with Sample RateOpen This Example
Compute the mid-reference level instant for a sampled bilevel waveform. Use the time information to determine the sample rate, which is 4 MHz.
load('transitionex.mat','x','t')
Fs = 1/(t(2)-t(1))
Fs =
4000000
Use the sample rate to express the mid-reference level instant in seconds. Plot the waveform and annotate the result.midcross(x,Fs)
ans =
5.1250e-06
Mid-Reference Level Instant Using Sample InstantsOpen This Example
Compute the mid-reference level instant using a vector of sample times equal in length to the bilevel waveform. The sample rate is 4 MHz.
load('transitionex.mat','x','t')
C = midcross(x,t)
C =
5.1250e-06
Annotate the result on a plot of the waveform.midcross(x,t);
Mid-Reference Level Value of Bilevel WaveformOpen This ExampleCompute the level corresponding to the mid-reference level instant.load('transitionex.mat','x','t')
[~,midlev] = midcross(x,t)
midlev =
1.1388
Annotate the result on a plot of the waveform.midcross(x,t);
Sixty Percent Reference Level Instant and Waveform ValueOpen This ExampleObtain the 60% reference level instant and value for a bilevel waveform sampled at 4 MHz.load('transitionex.mat','x','t')
[mc,Lev60] = midcross(x,t,'MidPercentReferenceLevel',60)
mc =
5.1473e-06
Lev60 =
1.3682
Annotate the result on a plot of the waveform.midcross(x,t,'MidPercentReferenceLevel',60);
Output / Return Value
Limitations
Alternatives / See Also
Reference