Resampling data signals in the System Identification Toolbox™ product applies an antialiasing (lowpass) FIR filter to the data and changes the sampling rate of the signal by decimation or interpolation.
If your data is sampled faster than needed during the experiment, you can decimate it without information loss. If your data is sampled more slowly than needed, there is a possibility that you miss important information about the dynamics at higher frequencies. Although you can resample the data at a higher rate, the resampled values occurring between measured samples do not represent new measured information about your system. Instead of resampling, repeat the experiment using a higher sampling rate.
Tip You should decimate your data when it contains high-frequency noise outside the frequency range of the system dynamics. |
Resampling takes into account how the data behaves between samples, which you specify when you import the data into the System Identification app (zero-order or first-order hold). For more information about the data properties you specify before importing the data, see Represent Data.
You can resample data using the System Identification app or
the resample
command. You can
only resample time-domain data at uniform time intervals.
For a detailed discussion about handling disturbances, see the chapter on preprocessing data in System Identification: Theory for the User, Second Edition, by Lennart Ljung, Prentice Hall PTR, 1999.
Typically, you decimate a signal to remove the high-frequency contributions that result from noise from the total energy. Ideally, you want to remove the energy contribution due to noise and preserve the energy density of the signal.
The command resample
performs the decimation
without aliasing effects. This command includes a factor of T to
normalize the spectrum and preserve the energy density after decimation.
For more information about spectrum normalization, see Spectrum Normalization.
If you use manual decimation instead of resample
—by
picking every fourth sample from the signal, for example—the
energy contributions from higher frequencies are folded back into
the lower frequencies("aliasing"). Because the total signal energy
is preserved by this operation and this energy must now be squeezed
into a smaller frequency range, the amplitude of the spectrum at each
frequency increases. Thus, the energy density of the decimated signal
is not constant.
This example shows how resample
avoids folding effects.
Construct a fourth-order moving-average process.
m0 = idpoly(1,[ ],[1 1 1 1]);
m0 is a time-series model with no inputs.
Generate error signal.
e = idinput(2000,'rgs');
Simulate the output using the error signal.
sim_opt = simOptions('AddNoise',true,'NoiseData',e); y = sim(m0,zeros(2000,0),sim_opt); y = iddata(y,[],1);
Estimate the signal spectrum.
g1 = spa(y);
Estimate the spectrum of the modified signal including every fourth sample of the original signal. This command automatically sets Ts to 4.
g2 = spa(y(1:4:2000));
Plot the frequency response to view folding effects.
h = spectrumplot(g1,g2,g1.Frequency); opt = getoptions(h); opt.FreqScale = 'linear'; opt.FreqUnits = 'Hz'; setoptions(h,opt);
Estimate the spectrum after prefiltering that does not introduce folding effects.
g3 = spa(resample(y,1,4)); figure spectrumplot(g1,g3,g1.Frequency,opt)
Use resample
to decimate the signal before estimating the spectrum and plot the frequency response.
g3 = spa(resample(y,1,4)); figure spectrumplot(g1,g3,g1.Frequency,opt)
The plot shows that the estimated spectrum of the resampled signal has the same amplitude as the original spectrum. Thus, there is no indication of folding effects when you use resample
to eliminate aliasing.