傅里叶变换及其实现(MATLAB)
傅立叶变换
傅立叶变换是一种常见的分析方法,傅立叶变换将满足一定条件的函数表示为一些函数的加权和(或者积分)。可以分为四个类别:
1. 非周期连续性信号
对应于傅里叶变换,频域连续非周期
2. 周期性连续性信号
对应于傅立叶级数,频域离散非周期
3. 非周期离散信号
对应于DTFT(离散时间傅立叶变换),频域连续周期
4. 周期性离散信号
对应于DFT(离散时间傅立叶变换),频域离散周期
傅立叶级数
首先从傅立叶级数开始分析,傅立叶级数是将一个信号在一组正交基上进行分解的体现。
x(t) = \sum_{k=-\infty}^{+\infty}a_{k}e^{jk\omega_{0}t}
a_{k} = \frac{1}{T} \int_{-T/2}^{T/2}x(t)e^{-jk\omega_{0}t}dt
连续时间傅立叶变换
ω0=2πTω0=2πT\omega_{0} = \frac{2\pi}{T},当T→∞T→∞T\to\infty时,ω0→0ω0→0\omega_{0}\to 0;
令X(jω)X(jω)X(j\omega)是TakTakTa_{k}的包络,用kω0→ωkω0→ωk\omega_{0}\to\omega,推出:
正变换:
X(j\omega) = \int_{-\infty}^{+\infty}x(t)e^{-jk\omega_{0}t}dt
其中 akaka_{k}是 X(jω)X(jω)X(j\omega)的等距离采样, ak=1TX(jkω0)ak=1TX(jkω0)a_{k} = \frac{1}{T}X(jk\omega_{0})
所以当 T→∞T→∞T\to\infty时, ω0→0ω0→0\omega_{0}\to 0,可以推出:
x(t)=∑akejkω0t=∑1TX(jkω0)ejkω0t=∑12πX(jkω0)ejkω0tω0x(t)=∑akejkω0t=∑1TX(jkω0)ejkω0t=∑12πX(jkω0)ejkω0tω0x(t) = \sum a_{k}e^{jk\omega_{0}t} = \sum \frac{1}{T}X(jk\omega_{0})e^{jk\omega_{0}t} = \sum \frac{1}{2\pi}X(jk\omega_{0})e^{jk\omega_{0}t}\omega_{0}
极限时转变为积分:
逆变换:
x(t) = \frac{1}{2\pi}\int_{-\infty}^{+\infty} X(j\omega)e^{j\omega t}d\omega
离散时间傅立叶变换
离散时间傅立叶变换在频域上是连续的,但由于计算机无法表示无限长的时间片段,已经无法表示全部频率,一般取一定频域的分量。
正变换:
X(e^{j\omega}) = \sum_{n=-\infty}^{+\infty}x[n]e^{-j\omega n}
逆变换:
x[n] = \frac{1}{2\pi} \int_{2\pi}^{}X(e^{j\omega})e^{j\omega n}d\omega
离散傅立叶变换
只有离散傅立叶变换在频域和时域都是离散的,即计算机可以处理的,因此DFT是可以实际进行编程并实用的。DFT的信号首先要进行截断,因为能处理的信号必须是有限的;然后对信号进行采样,对频谱进行离散化。
正变换:
X(k) = \sum_{n=0}^{N-1}x(n)e^{-j\frac{2\pi}{N}nk}
逆变换:
x(n) = \frac{1}{N}\sum_{k=0}^{N-1}X(k)e^{j\frac{2\pi}{N}nk}
二维傅立叶变换
F(u,v) = \sum_{x=0}^{M-1} \sum_{y=0}^{N-1}f(x,y)e^{-j2\pi(ux/M+vy/N)}
f(x,y) = \frac{1}{MN}\sum_{x=0}^{M-1} \sum_{y=0}^{N-1}F(u,v)e^{j2\pi(ux/M+vy/N)}
傅立叶变换实现
只有离散傅里叶变换才可以实现,在MATLAB中实现有fft
,fft2
进行傅里叶变换,同样可以手动进行变换。
一维傅立叶变换
基于FFT
% xn是信号,n是坐标,N是点数
% N =8;
% n = [0:1:N-1];
% xn = 0.5.^n; % 指数信号
function [] = DFTusefft(xn,n,N)figure(1);Xk=fft(xn,N); % 傅立叶变换subplot(211);stem(n,xn);title('原信号');subplot(212);stem(n,abs(Xk));title('FFT变换')
end
DFT公式
function [] = DFT(xn,n,N)Xk = zeros(1,N); for k=1:Nsn =0.0;for i=1:Nsn = sn+xn(i)*exp(-j*2*pi*i*k/N);endXk(k) = sn;endfigure(2);subplot(211);stem(n,xn);title('原信号');subplot(212);stem(n,abs(Xk));title('DFT')
end
DTFT
由于DTFT的频域是连续的而且是无穷的,当我们选择的最高频域足够高时,可以基本代表信号特征,可以进行编程。
function [] = testDTFT(xn,n,N)figure(3);w=[-800:1:800]*4*pi/800; %频域共-800----+800 的长度(本应是无穷,高频分量很少,故省去) w = [-N/2:1:N/2]*4*pi*2/N;X=xn*exp(-j*(n'*w)); %求dtft变换,采用原始定义的方法,对复指数分量求和而得subplot(211)stem(n,xn);title('原始信号(指数信号)');subplot(212);plot(w/pi,abs(X));title('DTFT变换')
end
二维傅立叶变换
原始图像
使用fft2
function [] = imagefft()I=imread('lenna.jpg');I=rgb2gray(I);I=im2double(I);F=fft2(I);F=fftshift(F);F=abs(F);T=log(F+1);figure(4);imshow(T,[]);
end
使用二维傅立叶变换公式
速度很慢
function [] = imageDFT()I=imread('lenna_s.jpg');I=rgb2gray(I);I=im2double(I);[x,y] = size(I);ans = ones(x,y);com = 0+1i;for u =1:xfor v= 1:ysn =0;for i=1:x for j=1:ysn = sn+I(i,j)*exp(-com*2*pi*(u*i/x+v*j/y));endendans(u,v) = sn;endendF=fftshift(ans);F= abs(F);F=log(F+1);figure(5);imshow(F,[]);
end
优化二维傅立叶变换
先按列进行傅里叶变换,再对行进行傅立叶变换,简化计算。
function [] = imageDFT2()I=imread('lenna.jpg');I=rgb2gray(I);I=im2double(I);[x,y] = size(I);Ax = ones(x,y);ans = ones(x,y);com = 0+1i;% 对每一列进行DFTfor k =1:x for m=1:ysn =0;for n =1:xsn =sn + I(n,m)*exp(-com*2*pi*k*n/x);endAx(k,m) = sn;endend% 对每一行进行DFTfor l =1:yfor k =1:xsn =0;for m=1:ysn = sn+Ax(k,m)*exp(-com*2*pi*l*m/y);endans(k,l) = sn;endend F=fftshift(ans);F= abs(F);F=log(F+1);figure(6);imshow(F,[]);
end
优化二维傅立叶变换
将按列进行傅里叶变换中使用DFT改为使用fft,速度提升很快。
function [] = imageDFT2fft()I=imread('lenna.jpg');I=rgb2gray(I);I=im2double(I);[x,y] = size(I);Ax = ones(x,y);ans = ones(x,y);com = 0+1i;% 对每一列进行DFT for m=1:yAx(:,m) = fft(I(:,m));end% 对每一行进行DFT for k=1:xans(k,:) = fft(Ax(k,:));endF=fftshift(ans);F= abs(F);F=log(F+1);figure(7);imshow(F,[]);
end
github地址
如有错误,欢迎指出~
傅里叶变换及其实现(MATLAB)相关推荐
- 短时傅里叶变换原理及其MATLAB实现(Short Time Fourier Transform,STFT)
短时傅里叶变换原理及其MATLAB实现(Short Time Fourier Transform,STFT) 1.短时Fourier变换原理(STFT原理) 信号x(t)短时Fourier变换定义为: ...
- MATLAB离散傅里叶变换实验结果分析,Matlab离散傅里叶变换实验报告
Matlab离散傅里叶变换实验报告 班级 信工082 学号 16 姓名 刘刚 实验组别 实验日期 室温 报告日期 成绩 报告内容:(目的和要求,原理,步骤,数据,计算,小结等) 实验三 离散傅立叶变换 ...
- 短时傅里叶变换(STFT)及matlab
笔记~自用版~ 短时傅里叶变换的基础理论 短时傅里叶变换(Short-Time Fourier Transform, STFT)是一种时频分析方法,它将信号在时间域上分成若干个短时段,对每个短时段进行 ...
- 傅里叶变换对称性质MATLAB,实数序列离散傅里叶变换(DFT)的共轭对称性质
先在matlab中运行以一命令,观察一下结果: >> b=[1 2 3 4 5 6 7 8] b = 1 2 3 4 5 6 7 8 ...
- MATLAB离散傅里叶变换实验结果分析,Matlab离散傅里叶变换实验报告.doc
班级 信工082 学号 16 姓名 刘刚 实验组别 实验日期 室温 报告日期 成绩 报告内容:(目的和要求,原理,步骤,数据,计算,小结等) 实验三 离散傅立叶变换(DFT) 1.离散傅立叶级数 给定 ...
- 傅里叶变换对称性质MATLAB,利用共轭对称和反对称性质做离散傅里叶变换求相关性问题...
LZ的数据不是128,补零成256:而本身数据长256,补零成512. 又从2个实数序列构成1个复数序列,FFT后恢复出各自的DFT时,求出的F_x和F_y不正确,所以进一步计算也都错误的.给出程序如 ...
- 【 MATLAB 】用 MATLAB 实现离散时间傅里叶变换(DTFT)的两个案例分析
先给出离散时间傅里叶变换的简单介绍: 如果 x(n) 是绝对可加的,即 那么它的离散时间傅里叶变换给出为: w 称为数字频率,单位是每样本 rad(弧度)或 (弧度/样本)(rad/sample) 案 ...
- matlab的傅里叶变换
更多MATLAB图像处理视频请点击 http://study.163.com/course/courseMain.htm?courseId=1003594013 图像变换: 更多MATLAB图像处理 ...
- 一文教你理解傅里叶变换及MATLAB在求傅里叶变换中的应用
大纲 从积分变换谈起 积分变换的基本概念 积分变换的来源 傅里叶级数 傅里叶级数的相关基础概念 傅里叶级数的基石--三角函数系及其正交性 三角函数系 三角函数系的正交性 傅里叶级数的含义 傅里叶系数的 ...
- 【数字信号处理】序列傅里叶变换 ( 傅里叶变换实例 | 矩形窗函数 | 傅里叶变换 | 傅里叶变换幅频特性 | 傅里叶变换相频特性 )
文章目录 一.序列傅里叶变换实例 1.傅里叶变换 2.傅里叶变换幅频特性 3.傅里叶变换相频特性 一.序列傅里叶变换实例 求序列 x(n)=RN(n)①x(n) = R_N(n) \ \ \ \ ①x ...
最新文章
- 8.Deep Interest Evolution Network for Click-Through Rate Prediction论文详解
- Sql Injection脚本注入终极利用方法
- Linux后台进程管理以及ctrl+z(挂起)、ctrl+c(中断)、ctrl+\(退出)和ctrl+d(EOF)的区别
- 有人说Julia比Python好,还给出了5个理由
- mysql 表中添加唯一约束
- ubuntu mysql 更新_数据库应用(三): Ubuntu 下 MySQL添加、更新与删除数据
- SAP UI5 应用开发教程之八 - 多语言的支持
- 企业网站6个常见的优化漏洞
- mac在命令行里获取root权限
- 教你怎么蹭网实现和dualwan双倍网速上网
- 这个寒假要大更新了!
- Trick(九)—— ++i 与 i++ 的本质区别
- 电脑里的所有播放器只能播放声音没有画面
- 操作系统:作业调度算法--短作业优先
- C#网络编程 (二) 数据流的类型和应用
- Python从zip文件里导入包
- beacon设备使用记录
- dvwa brute force(暴力破解)
- Visual Studio调试方式详解
- 真机模拟‘错误码:80058,desc of scope.userLocation is empty’的解决方案
热门文章
- qcc512x_qcc302x开发调试笔记
- 跑腿源码之外卖人v9.1_9.2的升级过程For 9.0及小程序及(客户端,配送端,商户端)的二次编译方法
- 计算平均指令时间_欧姆龙PLC指令应用案例(问答解析)
- 搜狗输入法纯净_最新PC端搜狗输入法,无广告弹窗纯净版
- 尼日利亚4g频段_4G全球频段划分及主要运营商对应表2015版
- seetaface6教程:封装人脸识别,人脸检测,,眼睛检测,状态,特征.....
- 购买周期 python-用Python实现一个基于EG协整法的跨周期套利策略
- 身份证号码中间显示*星号
- CCPC-wannafly Camp Day2 讲课内容总结(杜瑜皓-数据结构)
- html短竖线符号,word竖线符号