前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MATLAB实现 利用FFT和IFFT计算线性卷积

MATLAB实现 利用FFT和IFFT计算线性卷积

作者头像
timerring
发布于 2022-07-20 06:23:52
发布于 2022-07-20 06:23:52
2.2K04
代码可运行
举报
文章被收录于专栏:TechBlogTechBlog
运行总次数:4
代码可运行

一、实验目的 1.学习用 FFT和IFFT计算线性卷积的方法。 2.编制 IFFT程序。 3.实现用 FFT 程序计算线性卷积。

二、实验原理 利用 FFT 计算线性卷积,是将 x(n)、h(n) 用补零法延长到 N+M-1  用循环卷积定理完成的,因此要求 x(n) 、 h(n)延长后的长度 既满足 L>=N+M-1 又满足 L = 2γ ,(γ 为任意正整数)后者是 FFT  时间抽选奇偶分解算法要求的,程序中都要给于保证。 三、实验内容 1、 已知两个序列:

 分别用直接法和 FFT 方法计算它们的线性卷积,并比较其结果。

参考流程图:

输入序列 x(n),h(n)长度分别为N 和 M

 2、利用 FFT 实现两序列的卷积运算,并研究 FFT 点数与混叠的关系。         给定 x(n) = nR16 (n), h(n) = R8 (n) ,用 FFT 和 IFFT 分别求线性卷积和混叠结果输出,并画出相应图形。 参考流程图:

 四、实验报告及要求 1. 简述实验原理及目的。 2. 整理好经过运行并证明是正确的程序。 3. 对计算线性卷积的两种方法,直接法和FFT 法进行比较。 4. 分析研究如何将本程序改造成完成分段卷积的程序。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
N=10;M=15;
nx=0:N-1;
x=[nx<=5];
n1=0:11;
h1=0.8.^n1;
nh=0:M-1;
h=zeros(1,M);
h(find(nh<=11))=h1;
y1=conv(x,h);
n01=min(nx)+min(nh);
n02=max(nx)+max(nh);
ny1=[n01:n02];
subplot(321),stem(nx,x,'.');
text(8,0.7,'x(n)');
subplot(322),stem(nh,h,'.');
text(11,0.7,'h(n)');
subplot(312),stem(ny1,y1,'.');
text(18,3,'直接线性卷积');
n=0:N+M-2;
L=length(n);
xk=fft(x,L);
hk=fft(h,L);
yk=xk.*hk;
y2=ifft(yk);
y2=abs(y2);
subplot(313),stem(n,y2,'.');
text(18,3,'用FFT进行卷积');
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
n1=0:15;
x1=n1;
n2=0:7;
M=length(n2);
x2=ones(1,M);
y1=conv(x1,x2);
n01=min(n1)+min(n2);
n02=max(n1)+max(n2);
ny1=[n01:n02];
subplot(421),stem(n1,x1,'.');
title('x1(n)');
subplot(422),stem(n2,x2,'.');
title('x2(n)');
subplot(423),stem(ny1,y1,'.');
title('线性卷积');
for L=17:3:29
n=0:L-1;
xk1=fft(x1,L);
xk2=fft(x2,L);
yk=xk1.*xk2;
y2=ifft(yk);
y2=abs(y2);
subplot(4,2,(L-5)/3),stem(n,y2,'.');
title('用FFT进行卷积');
end
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MATLAB实现 有限长序列的线性卷积和圆周卷积
一、实验目的 1.通过实验加深对线性卷积和圆周卷积的认识. 2.知道如何用圆周卷积来计算线性卷积.
timerring
2022/07/20
1.7K0
MATLAB实现 有限长序列的线性卷积和圆周卷积
MATLAB实现分段卷积
二、实验原理及方法 在某些场合下,可能要求将一个有限长度的序列与一个长度不定或相当长的序列进行线性卷积,若将整个序列存储起来再作大点数的运算,不但运算量大,而且往往时延也不允许并且在实际应用中,往往要求实时处理。在这些情况下,就要将长序列分段,每一段分别与 短序列进行卷积,即分段卷积。有两种方法:重叠相加法和重叠保留法。 1.重叠相加法 设序列h(n) 长为 M, x(n) 是长序列。这种方法是将 x(n) 分段,每段长与h(n) 接近设为 N₁,将每一段分别与h(n) 进行线性卷积,再将分段卷积各段重叠的部分相加构成总的卷积输出。
timerring
2022/07/20
1.2K0
MATLAB实现分段卷积
MATLAB实现FFT 及信号的谱分析
一、实验目的 1.通过实验加深对 FFT 的理解,熟悉 FFT 程序、结构及编程方法。
timerring
2022/07/20
1.4K0
MATLAB实现FFT 及信号的谱分析
基于MATLAB的数字信号处理(3) 用FFT对信号作频谱分析
学习用 FFT 对连续信号和时域离散信号进行频谱分析(也称谱分析)的方法, 了解可能出现的分析误差及其原因,以便正确应用FFT。
叶庭云
2021/12/01
8.1K0
基于MATLAB的数字信号处理(3)   用FFT对信号作频谱分析
Java面向对象2(G~J)
G    织女的红线(SDUT 2240) import java.util.Scanner; import java.text.DecimalFormat; class Sum { double x1, y1, x2, y2; Sum(double n1, double m1, double n2, double m2) { x1 = n1; x2 = n2; y1 = m1; y2 = m2; } double getAns() { double ans = 0;
Lokinli
2023/03/09
2310
OFDM完整仿真过程及解释(MATLAB)
0.能找到这篇文章,说明对ofdm已经有一点了解,所以其原理就不再赘述,这篇代码的目的只是希望能对ofdm整个过程有一个理解;
全栈程序员站长
2022/09/05
2.8K0
MATLAB语音信号处理「建议收藏」
数字信号处理课设,我们使用MATLAB对语音信号进行了一系列处理,并将其所有功能集中于下图界面中:
全栈程序员站长
2022/09/01
4.2K0
MATLAB语音信号处理「建议收藏」
信号与系统实验三 信号的卷积计算
1.对下图中的信号x1(t)=2u(t)-2u(t-1) ,x2(t)=u(t)-u(t-2),求y(t)=x1(t)*x2(t),并画出y(t)的波形图。
timerring
2022/07/20
9070
信号与系统实验三 信号的卷积计算
MATLAB实现离散傅里叶变换DFT
一、实验目的 1.通过实验加深对DFT 的理解。 2.理解如何用DFT计算离散信号频谱。
timerring
2022/08/03
1.1K0
MATLAB实现离散傅里叶变换DFT
1D卷积入门:一维卷积是如何处理数字信号的
卷积是对两个函数(f和g)进行的一种数学运算,它产生的第三个函数表示其中一个函数的形状如何被另一个函数修改。
deephub
2020/05/28
2.3K0
麦克风阵列声源定位程序_麦克风阵列怎么设置
利用麦克风阵列可以实现声源到达方向估计(direction-of-arrival (DOA) estimation),DOA估计的其中一种方法是计算到达不同阵元间的时间差,另外一种可以看这里,这篇主要介绍经典的GCC-PHAT方法
全栈程序员站长
2022/11/09
1.9K0
麦克风阵列声源定位程序_麦克风阵列怎么设置
差分方程及求解MATLAB实现
1.学习并掌握系统的差分方程表示方法以及差分方程的相关概念。 2.熟练使用filter函数对差分方程进行数值求解。 3.掌握差分方程的求解及MATLAB实现方法。
timerring
2022/07/20
2.8K0
差分方程及求解MATLAB实现
MATLAB plotyy总结「建议收藏」
当需要画出2个两个不同纵坐标的图时,此时的横坐标的图是相同的,在MATLAB中这个函数叫plotyy 下面列举的是一个简单的画plotyy的应用 几种不同的调用格式
全栈程序员站长
2022/07/04
5K0
MATLAB plotyy总结「建议收藏」
卡尔曼滤波应用及其matlab实现
房间温度在25摄氏度左右,测量误差为正负0.5摄氏度,方差0.25,R=0.25。Q=0.01,A=1,T=1,H=1。
全栈程序员站长
2022/09/07
1.2K0
卡尔曼滤波应用及其matlab实现
模拟信号的采样定理MATLAB实现
一.    实验目的         1.掌握信号的采样的方法。         2.分析信号的采样频率对频率特性的影响。
timerring
2022/08/03
4840
模拟信号的采样定理MATLAB实现
离散信号运算的MATLAB 实现
一、实验目的 1.  掌握离散信号的时域特性。 2.  用 MATLAB 实现离散信号的各种运算。
timerring
2022/07/20
9140
离散信号运算的MATLAB 实现
问题 1471: [蓝桥杯][基础练习VIP]矩形面积交
题目描述 平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。 输入 输入仅包含两行,每行描述一个矩形。
且陶陶
2023/04/12
2560
投影矩阵的计算_投影矩阵的几何意义
在进行迭代重建的过程中,我们首先需要求出投影矩阵之后才能进行其他后续的操作,在迭代重建中起到了基石的作用。并且在前面的文章中《迭代重建算法中投影矩阵的计算》已经给出了一种方法,但是我发现在程序的运行过程中存在一些未知的bug,导致程序在计算某些角度的投影矩阵时出现错误。由于一直没有找到出现bug的原因,因此我改变了计算思路,找到了下文中正确的计算方法。
全栈程序员站长
2022/11/09
1.5K0
投影矩阵的计算_投影矩阵的几何意义
Matlab画图-非常具体,非常全面
强大的画图功能是Matlab的特点之中的一个,Matlab提供了一系列的画图函数,用户不须要过多的考虑画图的细节,仅仅须要给出一些基本參数就能得到所需图形,这类函数称为高层画图函数。此外,Matlab还提供了直接对图形句柄进行操作的低层画图操作。这类操作将图形的每一个图形元素(如坐标轴、曲线、文字等)看做一个独立的对象,系统给每一个对象分配一个句柄,能够通过句柄对该图形元素进行操作,而不影响其它部分。
全栈程序员站长
2021/11/18
2.3K0
Matlab系列之二维图形(下)
交互式绘图的意思就是可以使用鼠标对图形进行操作,具体的实现看待会的演示,首先了解几个会用到的函数:ginput、gtext和zoom,其中ginput只能用于二维图形绘制,另外两个还适用于三维图形绘制。
狂人V
2021/04/29
1.5K0
Matlab系列之二维图形(下)
相关推荐
MATLAB实现 有限长序列的线性卷积和圆周卷积
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验