作业帮 > 综合 > 作业

关于matlab的两个小程序的解释说明

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/29 02:34:06
关于matlab的两个小程序的解释说明
我几乎不会matlab,但想掌握这两个程序,请会matlab得到大虾对以下两个简单的程序做详细的说明,可以让我理解掌握其中用到的函数.
(一)
function pr1()
%11差分方程
a=[1,-1,0.9];
b=1;
x=impseq(0,-20,120);
n=-20:120;
h=filter(b,a,x);
figure(1)
stem(n,h);
title('冲激响应');
xlabel('n');
ylabel('h(n)');
%
figure(2)
[z,p,g]=tf2zp(b,a);
zplane(z,p)
function [x,n]=impseq(n0,n1,n2)
n=[n1:n2];
x=[(n-n0)==0];
(二)
function pr2()
%12 experiment
b=[0.0181,0.0543,0.0543,0.0181];
a=[1.000,-1.76,1.1829,-0.2781];
m=0:length(b)-1;
l=0:length(a)-1;
K=500;
k=1:K;
w=pi*k/K;
H=(b*exp(-j*m'*w))./(a*exp(-j*l'*w));
magH=abs(H);
angH=angle(H);
figure(1)
subplot(2,1,1);
plot(w/pi,magH);
grid;
axis([0,1,0,1]);
xlabel('w(pi)');
ylabel('|H|');
title('幅度,相位响应');
subplot(2,1,2);
plot(w/pi,angH);
grid;
xlabel('w(pi)');
ylabel('angle(H)');
以上程序运行后的图如下:

如果得到合适的答案,一定会追加悬赏分!

好久没做过这类地解答了,希望我说的还算明白
_________________________
function pr1()
%11差分方程
a=[1,-1,0.9]; %通过a,b构造了一个滤波器,传递函数为H(z)=1/(1-z^(-1)+0.9*z^(-2)),a构造分母,b构造分子
b=1;
x=impseq(0,-20,120) %impseq是用来构造单位冲击函数,时间t的范围为[-20,120],当且仅当t=0处为1,即x(21)=1,其余均为零
n=-20:120;
h=filter(b,a,x); %以a,b构造的的滤波器,当输入为x时,输出为h,因为x是单位冲击函数,所以h就是该滤波器的单位冲击响应了
figure(1)
stem(n,h); %以n为横轴,h为纵轴画出火柴杆图
title('冲激响应');
xlabel('n');
ylabel('h(n)');
%
figure(2)
[z,p,g]=tf2zp(b,a) % [Z,P,K] = TF2ZP(NUM,DEN) finds the zeros,poles,and gains:
% z为零点,p为极点,g为增益,如下:
% (z-z1)(z-z2)...(z-zn)
% H(z) = K ------------------------
% (z-p1)(z-p2)...(z-pn)
zplane(z,p) %画出极零图
function [x,n]=impseq(n0,n1,n2)
n=[n1:n2];
x=[(n-n0)==0];
function pr2()
%12 experiment
__________________________________________
b=[0.0181,0.0543,0.0543,0.0181]; %其实虚线框中的这部分的作用和上面函数中的FILTER函数的作用一样,就是构造一个滤波器,H(z)还是b为分母,a为分子
a=[1.000,-1.76,1.1829,-0.2781];
m=0:length(b)-1;
l=0:length(a)-1;
K=500;
k=1:K;
w=pi*k/K;
H=(b*exp(-j*m'*w))./(a*exp(-j*l'*w)); %求出单位冲击响应函数
__________________________________________________________________________________
magH=abs(H); %求出单位冲击响应函数的幅值
angH=angle(H); %求出单位冲击响应函数的相位
figure(1)
subplot(2,1,1); %做出子图
plot(w/pi,magH);
grid; %添加栅格
axis([0,1,0,1]); %调节坐标轴范围
xlabel('w(pi)');
ylabel('|H|');
title('幅度,相位响应');
subplot(2,1,2);
plot(w/pi,angH);
grid;
xlabel('w(pi)');
ylabel('angle(H)');