convolve two signals using coonv, filter, cconv, freq domain multiplication (this one gives a wrong answer)
1 view (last 30 days)
Show older comments
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?
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/150569/image.jpeg)
Thanks
1 Comment
Matt J
on 26 May 2015
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.
Answers (0)
See Also
Categories
Find more on Measurements and Spatial Audio in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!