matlab.txt

来自「用impz()函数求冲激响应:用filter()函数求冲激响应 用filter(」· 文本 代码 · 共 58 行

TXT
58
字号
% (1) 用impz()函数求冲激响应:
M=100;
num=[1 -1 0];
den=[1 0.75 0.125];
y=impz(num,den,M);
subplot(2,2,1);
stem(y);
xlabel('时间');
ylabel('振幅');
title('单位冲激响应:impz()函数方法')


% (2) 用filter()函数求冲激响应:
n=0:100;
x=[1 zeros(1,100)];          
num=[1 -1 0];
den=[1 0.75 0.125];
y=filter(num,den,x);       %filter函数给出的点数与输入的x序列点数一样,所以为了不漏点,输入序列的点数尽量多补0,但用此函数求冲激响应不好
subplot(2,2,2);
stem(n,y);
xlabel('时间');
ylabel('振幅');
title('单位冲激响应:filter()函数方法')


% (3) 用filter()函数求余弦输入响应:
n=0:100;
x=cos(2*pi*0.47*n);
num=[1 -1 0];
den=[1 0.75 0.125];
y=filter(num,den,x);          %注意:“>>”后加一个空格再写指令,这样就可以直接COPY到MATLAB的命令窗执行,%是注释符号
subplot(2,2,3);
stem(n,y)
xlabel('时间');
ylabel('振幅');
title('余弦输入响应: filter()函数方法')

% (4) 用conv()函数求余弦响应:
n=0:100;
x1=cos(2*pi*0.47*n);
x2=[1 zeros(1,100)];
num=[1 -1 0];
den=[1 0.75 0.125];
y=filter(num,den,x2);
z=conv(x1,y);            % z的点数为x1的加上y(也即X2的)的再减1
subplot(2,2,4);
m=0:200;
stem(m,z);               % conv()可以显示201点,而用filter()仅显示101点
axis([0 100 -10 10]);       % 为了便于比较两种方法的值,减小本方法的横坐标尺度与filter()方法匹配
xlabel('时间');
ylabel('振幅');
title('余弦输入响应:conv()函数方法')

% (5) 系统零极点分布图:
num=[1 -1 0];
den=[1 0.75 0.125];
zplane(num,den);
grid

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?