householder变换qr分解matlab_【基础教程】Matlab实现傅里叶变换

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:51   1569   0

傅立叶变换

傅立叶变换是一种常见的分析方法,傅立叶变换将满足一定条件的函数表示为一些函数的加权和(或者积分)。可以分为四个类别:

1. 非周期连续性信号

对应于傅里叶变换,频域连续非周期

2. 周期性连续性信号

对应于傅立叶级数,频域离散非周期

3. 非周期离散信号

对应于DTFT(离散时间傅立叶变换),频域连续周期

4. 周期性离散信号

对应于DFT(离散时间傅立叶变换),频域离散周期

傅立叶级数

首先从傅立叶级数开始分析,傅立叶级数是将一个信号在一组正交基上进行分解的体现。

5d6d2041fdfe0231ed9a6ebe5d3a09db.png

连续时间傅立叶变换

59475161866c4107b2e72d19cdf34603.png

离散时间傅立叶变换

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

a7530aaf6cf5d19707c5329dd4797eeb.png

二维傅立叶变换

42d8ccf2a35d31238cc518209125613a.png

傅立叶变换实现

只有离散傅里叶变换才可以实现,在MATLAB中实现有fftfft2进行傅里叶变换,同样可以手动进行变换。

一维傅立叶变换

%  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的频域是连续的而且是无穷的,当我们选择的最高频域足够高时,可以基本代表信号特征,可以进行编程。9ce61c9d064c7b6cd265b91bbdae56c1.png

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

305bba005eb778e273925ad4b5b2780b.png

二维傅立叶变换

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

72fdd86a763609be0eae33ce05635058.png

往期回顾>>>>>>

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

fb322815dc77206baa7b862f0dc01e25.png

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP