www.gusucode.com > signal 案例源码程序 matlab代码 > signal/ParameterEstimationUsingTheYuleWalkerMethodExample.m

    %% Parameter Estimation Using the Yule-Walker Method
% Use a vector of polynomial coefficients to generate an AR(4) process by
% filtering 1024 samples of white noise. Reset the random number generator
% for reproducible results. Use the Yule-Walker method to estimate the
% coefficients.

% Copyright 2015 The MathWorks, Inc.


rng default

A = [1 -2.7607 3.8106 -2.6535 0.9238];

y = filter(1,A,0.2*randn(1024,1));

arcoeffs = aryule(y,4)

%%
% Generate 50 realizations of the process, changing each time the variance
% of the input noise. Compare the Yule-Walker-estimated variances to the
% actual values.

nrealiz = 50;

noisestdz = rand(1,nrealiz)+0.5;

randnoise = randn(1024,nrealiz);

for k = 1:nrealiz
    y = filter(1,A,noisestdz(k) * randnoise(:,k));
    [arcoeffs,noisevar(k)] = aryule(y,4);
end

plot(noisestdz.^2,noisevar,'*')
title('Noise Variance')
xlabel('Input')
ylabel('Estimated')

%%
% Repeat the procedure using |aryule|'s multichannel syntax.

realiz = bsxfun(@times,noisestdz,randnoise);

Y = filter(1,A,realiz);

[coeffs,variances] = aryule(Y,4);

hold on
plot(noisestdz.^2,variances,'o')

q = legend('Single channel loop','Multichannel');
q.Location = 'best';