1.MATLAB实现DFT

编写由定义式实现的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');

  • 11
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值