貌似是很久没有写日志了,前段时间一直很想写关于矩阵特征值在迭代

毕业设计貌似也跟仿真有关,所以重拾matlab来做一些小的仿真,先说说利用FFT 和 IFFT来实现傅立叶正反变换吧。看了很多资料,网上这方面的代码我觉得都太凌乱,没有把问题说清楚,有些直接就是错误的。下面分别以例子来说明:

例1:求在区间[-1,1]间的矩形信号的傅立叶变换。

(1)利用抽样产生离散时间

fs = 10;

ts = 1/fs;%时域抽样间隔

t = [-5:ts:5];

x = zeros(size(t));

x(41) = 0.5;

x(42:60) = ones(1,19);

x(61) = 0.5;

%x = 2*sinc(2*t);

%绘制时域波形

subplot(211)

plot(t,x);

title('矩形波时域图像');

xlabel('t');

ylabel('x(t)时域大小');

(2)FFT算法实现(核心关键)

核心解释:按ts的间隔(ts = 1/fs)对时间域抽样N点并且做FFT算法后,得到的是对应与频域[0,fs]间的N个值,频率分辨率为df = fs/N;同时我们知道fs其实对应着0频率,fs/2对应着-fs/2即有一个频率反转fftshift函数

N = 1024;%所做的FFT点数,2的次幂能实现快速算法

X = fft(x,N);%求得x(n)的DFT结果

X = X/fs;%由于时域抽样会有一个 1/Ts的衰减,所以必须乘以Ts也即除以fs

df = fs/N;%频率分辨率

f = [0:df:df*(N-1)] - fs/2;%频率倒转

%绘制频谱图

subplot(212)

plot(f,fftshift(abs(X)));%把数据‘循环倒转’

title('傅立叶正变换');

xlabel('频率')

结果如下:

注:由于时域采样点较少,所以时域波形略有失真

例二:把上述矩形波傅立叶变换F(f) = 2*sinc(2f)用ifft实现傅立叶反变换,意思变换到矩形波时域图像。

(1)产生频域抽样波形

T = 10;%频域采样对应的时域 平移周期

fc = 1/T;%频率抽样间隔

ff = [-10:fc:10];%

F = 2*sinc(2*ff);%矩形波的频谱

figure(2)

subplot(211)

plot(ff,F);

title('频域采样序列波形')

xlabel('f')

ylabel('频率采样大小')

(2)IFFT算法实现

核心:还是一样,先进行IFFT计算,然后实现时域倒转,这里要注意从频域到fft有一个尺度变换存在,即频域抽样点要乘以 频域总宽度 题目中为10-(-10)= 20;

y = ifft(F*20);

dt = T/length(y);

tt = [0:dt:dt*(length(y)-1)] - T/2;

yef = ifftshift(abs(y));

%绘制频域波形 对应的 时域波形

subplot(212)

plot(tt,(ifftshift(abs(y))));

title('傅立叶反变换')

xlabel('t')

结果如下:

其实,还有个问题,没有解决,当增加ifft变换点数时,幅值会相应变换,还没完全弄懂,主要是DSP忘得差不多了,赶紧补吧!晚安~

ifft变换用java_利用FFT 及 IFFT实现傅立叶正反变换 | 学步园相关推荐

  1. 利用FFT 及 IFFT实现傅立叶正反变换

    貌似是很久没有写日志了,前段时间一直很想写关于矩阵特征值在迭代算法中的应用,也自己展望了一下可以从另一个角度来分析Turbo码中的迭代算法.但是,梦想都给人以美好的幻觉,现实逼迫你不得不踏实的做好手头 ...

  2. c语言ifft,用于ARM上的FFT与IFFT源代码-C语言

    /******************************************************************************* ** 程序名称:快速傅里叶变换(FFT ...

  3. c代码实现 ifft运算_二维FFT,IFFT,c语言实现 | 学步园

    学习DIP第6天 网上关于FFT的实例有很多,具体也可以参照上一篇,其实Matlab,OpenCV都可以很轻松的实现相关操作,但是对于学习其原理,还是自己操作下比较好. 二维FFT的是实现方法是先对行 ...

  4. mysql阶梯统计_SQL技巧:利用阶梯式累加进行累计数量的计算 | 学步园

    SETNOCOUNTONDECLARE@TQtyINTIF@PerPrecisionISNULLSELECT@PerPrecision=2--得到外部的基本数据CREATETABLE#TempItem ...

  5. 分支限界法 java_算法java实现–分支限界法–单源最短路径问题 | 学步园

    单源最短路径问题的java实现(分支限界法) 具体问题描述以及C/C++实现参见网址 http://blog.csdn.net/liufeng_king/article/details/8900872 ...

  6. matlab的fft与ifft,fft与ifft区别

    OFDM是如何利用FFT和IFFT技术实现的_信息与通信_工程科技_专业资料.1.LTE 在广义上说只有一个载波,FDD 是上行和下行的载波分配在不同的频点,TDD 是在 同一个...... Matl ...

  7. c代码实现 ifft运算_X^n+1=0上的FFT和IFFT(基2)——C语言实现

    我们一般意义上学习的FFT都是基于 的,即FFT中的单位根我们取的是 ,但是在某些情况下我们需要 上的FFT和IFFT变换. 1.直接想到的思路是把 的根替换成 的根. 解法: 的根可以使用 的2n个 ...

  8. Python实现FFT及IFFT

    运行环境及编译工具 Windows VS Code 编程语言及库版本 库 版本 Python 3.7.0 copy 无 numpy 1.19.2 opencv 3.4.2 PIL 8.1.0 matp ...

  9. C语言实现的FFT与IFFT源代码,不依赖特定平台

    目录 源码 FFT.c FFT.h 使用方法 初始化 输入数据 FFT 快速傅里叶变换 解算FFT结果 使用python绘制FFT波形 IFFT 快速傅里叶逆变换 解算IFFT结果 Windows 1 ...

最新文章

  1. 疯狂ios讲义疯狂连载之显示动画
  2. Linux内核的整体架构介绍
  3. python 回文链表
  4. 文件项目SVN+TortoiseSVN+Subclipse使用总结
  5. Visual studio 2013 err:visual studio no editoroptiondefinition export found for the given option ...
  6. [课后作业] 第032讲:异常处理:你不可能总是对的
  7. 用python写名字
  8. 项目微管理23 - 会议
  9. 荒野大镖客fc java_FC荒野大镖客无敌版
  10. 四年前,我设计了一款纹胸小样儿……如图……
  11. 帮你混迹职场风生水起的八大定律
  12. [学习笔记]UnityShader入门精要_第12章_屏幕后处理效果
  13. MacTex 使用教程
  14. 如何透彻理解 Paxos 算法?
  15. javascript读取本地文件打印到浏览器中
  16. 【MapReduce】MapReduce读写MySQL数据
  17. 西方艺术史-文艺复兴笔记(第四次考试)
  18. [第五章] 深入理解计算机系统第三版 家庭作业参考答案
  19. QT--动态人流量监测系统
  20. F(w)的模是偶函数,相位角是奇函数

热门文章

  1. [AS日记]MacOS的Android Studio卡在Building Gradle Project info走不动 的处理方法
  2. sas 统计学 anova
  3. 一个cv大师的摆烂之旅
  4. mac m1 homebrew安装
  5. 如何将 Credly 中的数字徽章转成二维码
  6. vue引入wangEditor
  7. 美团2023届笔试题解
  8. 如何利用Python在网上接单,兼职也能月薪过万
  9. 一定要小心AI语音合成技术,我妈就被骗了!
  10. sqlmap用户手册