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.