傅立叶变换
傅立叶变换是一种常见的分析方法,傅立叶变换将满足一定条件的函数表示为一些函数的加权和(或者积分)。可以分为四个类别:
1. 非周期连续性信号
对应于傅里叶变换,频域连续非周期
2. 周期性连续性信号
对应于傅立叶级数,频域离散非周期
3. 非周期离散信号
对应于DTFT(离散时间傅立叶变换),频域连续周期
4. 周期性离散信号
对应于DFT(离散时间傅立叶变换),频域离散周期
傅立叶级数
首先从傅立叶级数开始分析,傅立叶级数是将一个信号在一组正交基上进行分解的体现。

连续时间傅立叶变换

离散时间傅立叶变换
离散时间傅立叶变换在频域上是连续的,但由于计算机无法表示无限长的时间片段,已经无法表示全部频率,一般取一定频域的分量。

二维傅立叶变换

傅立叶变换实现
只有离散傅里叶变换才可以实现,在MATLAB中实现有fft
,fft2
进行傅里叶变换,同样可以手动进行变换。
一维傅立叶变换
% 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
DTFT 由于DTFT的频域是连续的而且是无穷的,当我们选择的最高频域足够高时,可以基本代表信号特征,可以进行编程。
function [] = DFT(xn,n,N) Xk = zeros(1,N); for k=1:N sn =0.0; for i=1:N sn = sn+xn(i)*exp(-j*2*pi*i*k/N); end Xk(k) = sn; end figure(2); subplot(211); stem(n,xn); title('原信号'); subplot(212); stem(n,abs(Xk)); title('DFT')end

二维傅立叶变换
function [] = imageDFT2fft() I=imread('rice.png'); I=im2double(I); [x,y] = size(I); Ax = ones(x,y); ans = ones(x,y); com = 0+1i; % 对每一列进行DFT for m=1:y Ax(:,m) = fft(I(:,m)); end % 对每一行进行DFT for k=1:x ans(k,:) = fft(Ax(k,:)); end F=fftshift(ans); F= abs(F); F=log(F+1); figure(7); imshow(F,[]);end

往期回顾>>>>>>
基于栅格地图——遗传算法的机器人最优路径规划【模式识别】Matlab指纹识别【基础教程】matlab绘制疫情地图matlab自动识别银行卡号【优化问题】遗传算法求最值无参考图像质量评价之基于多特征的增强图像质量评价
