编写由定义式实现的DFT和由矩阵形式实现的DFT,以及线性卷积和周期卷积的实现.
题目重述
1.编写由定义式实现的DFT和由矩阵形式实现的DFT。
问题分析以及求解思路
待完善(请耐心等待)
程序代码
问题1代码
x=rand(1,5);
N=length(x);
xk=zeros(1,N);
n=0:1:N-1;
k=0:1:N-1;
xk=x*exp(-1i*(n'*k)*2*pi/N)
subplot(211)
stem([1:N],abs(xk))
title('定义法求DFT');
ylabel('X(k)');
xlabel('k');
x=x';
w=dftmtx(N);
X=w*x
subplot(212)
stem([1:N],abs(X))
title('矩阵法求DFT');
ylabel('X(k)');
xlabel('k');
问题3代码
x=rand(1,5);
h=rand(1,4);
L=length(x);
M=length(h);
N=M+L-1;
x_new=zeros(1,N);
h_new=zeros(1,N);
dftx_new=zeros(1,N);
dfth_new=zeros(1,N);
for i=1:1:L
x_new(i)=x_new(i)+x(i);%补零
end
for j=1:1:M
h_new(j)=h_new(j)+h(j);
end
subplot(221)
stem([1:L],x);
title('原x(n)序列');
ylabel('x(n)');
xlabel('n');
subplot(222)
stem([1:M],h);
title('原h(n)序列');
ylabel('h(n)');
xlabel('n');
y=conv(x,h);
subplot(223)
stem(1:1:length(y),y)
title('线性卷积');
ylabel('y(n)');
xlabel('n');
n=0:1:7;
k=0:1:7;
dftx_new=x_new*exp(-1i*(n'*k)*2*pi/N);
dfth_new=h_new*exp(-1i*(n'*k)*2*pi/N);
Y=dftx_new.*dfth_new;
zz=Y*exp(1i*2*pi/length(Y)*(n'*k))/length(Y);
subplot(224)
stem([1:N],abs(zz))
title('周期卷积');
ylabel('y(n)');
xlabel('n');