convolve two signals using coonv, filter, cconv, freq domain multiplication (this one gives a wrong answer)
1 次查看(过去 30 天)
显示 更早的评论
only the last one is not giving me an equal answer.
u=@(n)1.0.*(n>=2);
y=@(n)abs(2.*n+1).*(u(n+1)-u(n-5));
n_x=1:10;
n_y=-2:20;
y_n=u(n_y);
x_n=y(n_x);
c=conv(x_n,y_n);
n_c= n_x(1)+n_y(1):n_x(end)+n_y(end);
figure()
%
subplot(4,1,1)
stem(n_c,c)
xlabel('n')
xlim([-3,15])
title('u(n) * |2n+1|(u(n+1)-u(n-5)) using conv')
%
cf=filter(x_n,1,y_n);
cf=[cf,zeros(1,length(n_c)-length(cf))];
subplot(4,1,2)
stem(n_c,cf)
xlabel('n')
xlim([-3,15])
title('u(n) * |2n+1|(u(n+1)-u(n-5)) using filter')
%
cc=cconv(y_n,x_n);
subplot(4,1,3)
stem(n_c,cc)
xlabel('n')
xlim([-3,15])
title('u(n) * |2n+1|(u(n+1)-u(n-5)) using cconv')
subplot(4,1,4)
z=ifft(fft(x(-2:20)).*fft(y(-2:20)));
stem(-2:20 ,z);
xlabel('n')
title('u(n) * |2n+1|(u(n+1)-u(n-5)) multiplying in frequency domain')
what is wrong?
Thanks
1 个评论
Matt J
2015-5-26
Maybe you're not running the code that you think you are The indexing expression
x(-2:20)
is not legal, because of the negative indices. You should be getting an error message.
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Measurements and Spatial Audio 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!