注册 登录
编程论坛 Matlab

求教高手,为什么plot输出是错的呢

花间凤 发布于 2011-10-10 23:24, 807 次点击
n=0:100;
      x1=cos(0.1*n);
      x2=cos(0.4*n);
      x=x1+x2;
      h=[-6.76195 13.456335 -6.76195];
      y=conv(h,x);
      axis([0 100 -1.2 4]);
      plot(n,y,'r-',n,x2,'b--',n,x1,'g-.');grid
      ylabel('Amplitude'); xlabel('Time index n');
      legend('y[n]','x2[n]','x1[n]')
依据公式为y[n]=h[0]x[n]+h[1]x[n-1]+h[2]x[n-2]。

3 回复
#2
anbcjys2011-10-11 07:03
什么错误
#3
花间凤2011-10-11 11:47
已经解决了,谢谢关注。
#4
drmatlab2011-10-11 12:24

恭喜楼主自行解决这一问题。既然我也已经作了些工作,就拿出来与大家分享吧!


一、出错原因
由h和x卷积形成的向量y其维数等于h的维数+x的维数-1
y的维数=3+101-1=103
可见
y的维数不等于n的维数101,不能直接把n作为变量y作为函数来作图!

二、详细解剖
>> n=0:100;
      x1=cos(0.1*n);
      x2=cos(0.4*n);
      x=x1+x2;
      h=[-6.76195 13.456335 -6.76195];
      y=conv(h,x);
      axis([0 100 -1.2 4]);
>> size(y)

ans =

     1   103

>> size(n)

ans =

     1   101

>>   plot(n,y,'r-',n,x2,'b--',n,x1,'g-.');grid
??? Error using ==> plot
Vectors must be the same lengths.
 
三、解决问题的方案
>> plot(n,y(1:101),'r-',n,x2,'b--',n,x1,'g-.');grid
>>   ylabel('Amplitude'); xlabel('Time index n');
      legend('y[n]','x2[n]','x1[n]')

四、结果
只有本站会员才能查看附件,请 登录

1