www.gusucode.com > ident_featured 案例代码 matlab源码程序 > ident_featured/iddemo4.m
%% Spectrum Estimation Using Complex Data - Marple's Test Case % This example shows how to perform spectral estimation on time series % data. We use Marple's test case (The complex data in L. Marple: S.L. % Marple, Jr, Digital Spectral Analysis with Applications, Prentice-Hall, % Englewood Cliffs, NJ 1987.) % Copyright 1986-2012 The MathWorks, Inc. %% Test Data % Let us begin by loading the test data: load marple %% % Most of the routines in System Identification Toolbox(TM) support complex % data. For plotting we examine the real and imaginary parts of % the data separately, however. %% % First, take a look at the data: subplot(211),plot(real(marple)),title('Real part of data.') subplot(212),plot(imag(marple)),title('Imaginary part of data.') %% % As a preliminary analysis step, let us check the periodogram of the data: per = etfe(marple); w = per.Frequency; clf h = spectrumplot(per,w); opt = getoptions(h); opt.FreqScale = 'linear'; opt.FreqUnits = 'Hz'; setoptions(h,opt) %% % Since the data record is only 64 samples, and the periodogram is % computed for 128 frequencies, we clearly see the oscillations from the % narrow frequency window. We therefore apply some smoothing to the % periodogram (corresponding to a frequency resolution of 1/32 Hz): sp = etfe(marple,32); spectrumplot(per,sp,w); %% % Let us now try the Blackman-Tukey approach to spectrum estimation: ssm = spa(marple); % Function spa performs spectral estimation spectrumplot(sp,'b',ssm,'g',w,opt); legend({'Smoothed periodogram','Blackman-Tukey estimate'}); %% % The default window length gives a very narrow lag window for this % small amount of data. We can choose a larger lag window by: ss20 = spa(marple,20); spectrumplot(sp,'b',ss20,'g',w,opt); legend({'Smoothed periodogram','Blackman-Tukey estimate'}); %% Estimating an Autoregressive (AR) Model % A parametric 5-order AR-model is computed by: t5 = ar(marple,5); %% % Compare with the periodogram estimate: spectrumplot(sp,'b',t5,'g',w,opt); legend({'Smoothed periodogram','5th order AR estimate'}); %% % The AR-command in fact covers 20 different methods for spectrum % estimation. The above one was what is known as 'the modified covariance % estimate' in Marple's book. % % Some other well known ones are obtained with: tb5 = ar(marple,5,'burg'); % Burg's method ty5 = ar(marple,5,'yw'); % The Yule-Walker method spectrumplot(t5,tb5,ty5,w,opt); legend({'Modified covariance','Burg','Yule-Walker'}) %% Estimating AR Model using Instrumental Variable Approach % AR-modeling can also be done using the Instrumental Variable approach. % For this, we use the function |ivar|: ti = ivar(marple,4); spectrumplot(t5,ti,w,opt); legend({'Modified covariance','Instrumental Variable'}) %% Autoregressive-Moving Average (ARMA) Model of the Spectra % Furthermore, System Identification Toolbox covers ARMA-modeling of % spectra: ta44 = armax(marple,[4 4]); % 4 AR-parameters and 4 MA-parameters spectrumplot(t5,ta44,w,opt); legend({'Modified covariance','ARMA'}) %% Additional Information % For more information on identification of dynamic systems with System % Identification Toolbox visit the % <http://www.mathworks.com/products/sysid/ System Identification Toolbox> % product information page.