matlab计算卷积
例1
x1(n)={2,1,1,2} x2(n)={1,-1,-1,1}
两种方法
1)直接用时域计算卷积
2)x1(n)={2,1,1,2} x2(n)={1,-1,-1,1}分别dft到频域X1k和X2k,相乘后求idft,注意序列长度
clc;
clear all;
close all;
x1n=[2,1,1,2];
x2n=[1,-1,-1,1];
yn=conv(x1n,x2n)
M1=length(x1n);
M2=length(x2n);
N=M1+M2-1;
X1k=fft(x1n,N);
X2k=fft(x2n,N);
Yconvk=X1k.*X2k;
yconvn=ifft(Yconvk,N)
输出
yn =
2 -1 -2 2 -2 -1 2
yconvn =
2.0000 -1.0000 -2.0000 2.0000 -2.0000 -1.0000 2.0000
两种结果一样
例2
h(n)=R6(n),x(n)=n*R8(n)
计算8点循环卷积,和时域卷积
并且观察之间的关系
clc;
clear all;
close all;
hn=ones(1,6);