convolve two signals using coonv, filter, cconv, freq domain multiplication (this one gives a wrong answer)

1 visualizzazione (ultimi 30 giorni)
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 Commento
Matt J
Matt J il 26 Mag 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.

Accedi per commentare.

Risposte (0)

Categorie

Scopri di più su Measurements and Spatial Audio in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by