《DSP using MATLAB》示例Example 10.4

代码:

%% ------------------------------------------------------------------------
%%            Output Info about this m-file
fprintf('\n***********************************************************\n');
fprintf('        <DSP using MATLAB> Exameple 10.4 \n\n');

[v, d] = version;
fprintf('    MATLAB Version: %20s\n\n', v);
fprintf('     Released Date: %17s\n\n', d);

time_stamp = datestr(now, 31);
[wkd1, wkd2] = weekday(today, 'long');
fprintf('      Now is %20s, and it is %7s  \n\n', time_stamp, wkd2);
%% ------------------------------------------------------------------------

clear; close all;
% Filter parameters
format long;
N = 8; r = 0.9; b = 1; pl  = r*exp(j*2*pi*[0:N-1]/N); a = real(poly(pl));

% Variance-gain (exact)
Vg = VarGain(b, a)

% Variance-gain (approximate)
x = [1, zeros(1, 10000)];             % Unit sample sequence
h = filter(b, a, x);                  % Impulse response
VgCheck = sum(h.*h)


% Filter parameters
N = 8; r = 0.99; b = 1; pl  = r*exp(j*2*pi*[0:N-1]/N); a = real(poly(pl));

% Variance-gain (exact)
Vg = VarGain(b, a)

  运算结果:

    当N=8,r=0.9时,得到的结果是1.227448727234628(和书上的结果不一致,书中为1.02896272593178,到现在还没找到

原因),方差增益比1增加了约22%。而当r=0.99时,方差增益超过了673%,意味着当极点靠近单位圆时,滤波器的输出变得非常有噪声。

 

posted @ 2017-12-02 19:11  跑啊跑  阅读(230)  评论(0编辑  收藏  举报