用MATLAB工具画出 x(n)波形。

如题所述

1、楼上给的代码就可以了:

n = -5:40;
x = (1.02.^n+0.5*cos(2*pi*n/8+pi/4)).*(n>=0)+0.1*(n==-1)+0.15*(n==-2);
stem(n,x);

 

2、把系统T表示为滤波器形式的传递函数,然后直接调用impulse求解脉冲响应

T=filt(ones(1,7),[1 zeros(1,6)])/7;
[y,t]=impulse(T,40);
stem(t,y);

 

3、对系统进行z变换,得到传递函数为

T(z) = (1 + z^-1 + z^-2 + z^-3 + z^-4 + z^-5 + z^-6) / 7

系统所有极点均位于z=0,所以系统稳定;

从差分方程看,系统在n时刻的输出,只取决于该时刻以及该时刻之前的输入,所以是因果系统;

差分方程只包含输入量的一次方项,所以是线性系统;

差分方程的系数均为常数,所以是时不变系统。

 

4、使用循环求解y(n):

y = x * 0;
for i = 7:length(x)
    y(i) = sum(x(i-6:i-0)) / 7;
end
stairs(n,y)

5、使用filter函数求解:

y1 = filter(ones(1,7)/7,[1 zeros(1,6)],x);
plot(n,y,n,y1)

第4步编程计算时,输出从n=1开始计算的所以前几个值为0,而filter的计算结果则是从信号最左端开始,结果更可信。

 

也可以把几种信号都放在一张图中对比:

plot(n,x,'-o',n,y,'.-',n,1.02.^n.*(n>=-5),'--');
legend('x(n)','y(n)','ideal',4)

6、感想和体会自己写吧。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-04
function [x,n] =xn(n1,n2)
%x(n)序列
%n1,n2 为序列范围
n=[n1:n2];
ni = 1;
while ni<=length(n)
if n(ni)==-1
x(ni)=0.1;
elseif n(ni)=-2
x(ni)=0.15;
elseif (n(ni)>=0 && n(ni) <= 40)
x(ni)=(1.02).^ni+0.5*cos(2*pi*ni+pi/4);
else
x(ni)=0;
end
ni=ni+1;
end
end

采纳了就给第2.4.....题答案
第2个回答  2014-02-28
n=-10:40;
x=(1.02.^n+0.5*cos(2*pi*n/8+pi/4)).*(n>=0&n<=40)+0.1*(n==-1)+0.15*(n==-2);
plot(n,x,'-o');追问

请再帮我看看,刚开始学习matlab,想找点例子参考,我会提高悬赏的谢谢

第3个回答  推荐于2018-05-07
我是你的数字信号处理 李老师,学习态度不错,星期三下课后自己来找我。我亲自辅导你!本回答被网友采纳
相似回答