精华内容
下载资源
问答
  • 今天小编就为大家分享一篇Python利用FFT进行简单滤波的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 前面的例子我们已经使用Matlab和Vivado的FFT IP核进行了初步的验证,掌握的FFT/IFFT IP核的脾气,那么接下来我们要玩点真的了,基于我们STAR/SF-AT7板采集到的MT9V034图像,我们要进行每个行的FFT和IFFT变换,当然,...
  • 该文件主要实现了FFT-IFFT法实现LFM信号匹配滤波。 仿真要求: 信号时宽为10us、带宽为30MHz、波形为LFM信号(单边扫频,即频率范围[0,30MHz])、采样率为80MHz
  • Matlab窄带带通滤波.doc

    2020-12-18 10:33:21
    调用了两个函数bandp和hua_fft function y=bandp(x,f1,f3,fsl,fsh,rp,rs,Fs) %带通滤波 %使用注意事项通带或阻带的截止频率与采样率的选取范围是不能超过采样率的一半 %即f1,f3,fs1,fsh,的值小于 Fs/2 %x:需要带通...
  • 受高斯噪声和椒盐噪声污染的二维图像的去噪方法。 空域滤波降噪以均值滤波和中值滤波为例,频域滤波以傅里叶低通滤波和小波变换去噪为例,分析以上四种方法的滤波降噪特点。
  • 自己的课设程序,要求用matlab实现读取音频文件和声卡采集,并FFT分析频谱,提供IIR、FIR两种滤波方式(高通、低通、带通),含有打包好的exe文件,不过如果你的电脑上不是matlab2013a版的可能运行不了,可以在自己...
  • matlab运用fft进行简单的滤波

    万次阅读 2013-10-17 21:28:05
    ******该程序共分为四个部分,绘制原始时域信号图;进行傅里叶变换并绘制频谱图;滤波并绘制频谱图;进行傅里叶反变换,绘制滤波后时域信号图****** clear all; dt=0.02;N=512; n=1:N-1;t=n*dt; 

    转直:http://iepi.neu.edu.cn/bbs_cn/forum.php?mod=viewthread&tid=162

    ******该程序共分为四个部分,绘制原始时域信号图;进行傅里叶变换并绘制频谱图;滤波并绘制频谱图;进行傅里叶反变换,绘制滤波后时域信号图******

    clear all;
    dt=0.02;N=512;
    n=1:N-1;t=n*dt;                                         %时间序列
    f=n/(N*dt);                                             %频率序列
    f1=3;f2=10;                                             %已知原始信号的频率成分
    x=0.5*sin(2*pi*3*n*dt)+cos(2*pi*10*n*dt);               %原始信号
    subplot(2,2,1);plot(t,x);                               %时域信号图
    title('时域信号');xlabel('时间/s');


    y=fft(x);                                               %对时域信号进行FFT变换
    xlim([0 12]);ylim([-1.5 1.5]);
    subplot(2,2,2);plot(f,abs(y)*2/N);                      %绘制原始信号的振幅图
    xlabel('频率/Hz');ylabel('振幅');
    xlim([0 50]);title('原始振幅谱');
    ylim([0 0.8]);


    f1=8;f2=15;                                             %要滤除频率的上下限
    yy=zeros(1,length(y));                                  %设置与y相同的元素数组
    for m=0:N-1                                             %将频率落在该频率范围内及其大于奈奎斯特的波滤除
        %小于奈奎斯特频率的滤波范围
        if (m/(N*dt)>f1&m/(N*dt)<f2)|(m/(N*dt)>(1/dt-f2)&m/(N*dt)<(1/dt-f1));
            %大于奈奎斯特频率的滤波范围
            %1/dt为一个频率周期
            yy(m+1)=0;                                      %将落在此频率范围内的振幅设置为0
        else
            if m<511;                                       %确定数组y(m+1)不溢出
            yy(m+1)=y(m+1);                                 %其余频率范围内的信号保持不变
            end
        end
    end
    subplot(2,2,4);plot(f,abs(yy)*2/N);                     %绘制滤波后的振幅谱
    xlim([0 50]);ylim([0 0.5]);
    xlabel('频率/Hz');ylabel('振幅');
    gstext=sprintf('自%4.1f-%4.1fHz的频率被滤除',f1,f2);
    %将滤波范围显示作为标题
    title(gstext);


    subplot(2,2,3);plot(t,real(ifft(yy)));
    %绘制滤波后的数据运用ifft变换回时域并绘图
    title('通过IFFT回到时域');
    xlabel('时间/s');
    ylim([-0.6 0.6]);xlim([0 12]);

    展开全文
  • matlab低通滤波

    万次阅读 多人点赞 2018-04-16 21:02:49
    低通滤波器的功能是让低频率通过而滤掉或衰减高频,其作用是过滤掉包含在高频中的噪声。所以低通滤波的效果是图像去噪声平滑增强,但同时也抑制了图像的边界,造成图像不同程度上的模糊。...利用理想低通滤波...

    低通滤波器的功能是让低频率通过而滤掉或衰减高频,其作用是过滤掉包含在高频中的噪声。所以低通滤波的效果是图像去噪声平滑增强,但同时也抑制了图像的边界,造成图像不同程度上的模糊。

    大于大小为M×N的图像,频率点(u,v)与频率中心的距离为D(u,v),其表达式为:

    1. 理想低通滤波器

    产生公式为:

    其中Do为理想低通滤波器的截止频率。理想低通滤波器具有平滑图像的作用,但是有很严重的振铃现象。

    利用理想低通滤波器对图像进行滤波:

    close all;clear all;clc;
    %利用理想低通滤波器对图像进行滤波
    I=imread('coins.png');
    I=im2double(I);
    M=2*size(I,1);  %滤波器的行数
    N=2*size(I,2);  %滤波器的列数
    u=-M/2:(M/2-1);
    v=-N/2:(N/2-1);
    [U,V]=meshgrid(u,v);
    D=sqrt(U.^2+V.^2);
    D0=80;  %截止频率设置为80
    H=double(D<=D0);  %理想低通滤波器
    J=fftshift(fft2(I,size(H,1),size(H,2)));  %时域图像转换到频域
    K=J.*H;  %滤波处理
    L=ifft2(ifftshift(K));  %傅立叶反变换
    L=L(1:size(I,1),1:size(I,2));
    figure;
    subplot(121);imshow(I);  %显示原图像
    subplot(122),imshow(L);  %显示滤波后的图像

    可以看到,右图的图像边缘变得模糊了。
    2. 巴特沃斯低通滤波器
    产生公式为:

    其中Do为巴特沃斯低通滤波器的截止频率,参数n为巴特沃斯滤波器的阶数,n越大则滤波器的形状越陡峭。
    利用巴特沃斯滤波器对图像进行滤波:
    close all;clear all;clc;
    %利用巴特沃斯低通滤波器对图像进行滤波
    I=imread('liftingbody.png');
    I=im2double(I);
    M=2*size(I,1);  %滤波器行数
    N=2*size(I,2);  %滤波器列数
    u=-M/2:(M/2-1);
    v=-N/2:(N/2-1);
    [U,V]=meshgrid(u,v);
    D=sqrt(U.^2+V.^2);
    D0=50;
    n=6;
    H=1./(1+(D./D0).^(2*n));  %构造巴特沃斯滤波器
    J=fftshift(fft2(I,size(H,1),size(H,2)));  %转换到频域
    K=J.*H;
    L=ifft2(ifftshift(K));  %傅立叶反变换
    L=L(1:size(I,1),1:size(I,2));  %改变图像大小
    figure;
    subplot(121),imshow(I);  %显示原始图像
    subplot(122);imshow(L);  %显示滤波后的图像

    该巴特沃斯低通滤波器,截止频率50,阶数为6。可以看到通过低通滤波后,去除了图像的高频部分,图像的边缘变得模糊。

    3.高斯低通滤波器

    产生公式为:

    其中Do为高斯低通滤波器的截止频率


    ------坚持就是胜利------

    展开全文
  • Matlab 实现信号滤波

    万次阅读 多人点赞 2020-11-30 10:07:26
    文章目录项目介绍代码实现1、导入信号2、加入噪声3、绘制原始信号的时域、频域4、滤波4.1 移动平均滤波4.2 中值滤波4.3 维纳滤波4.4 自适应滤波4.5 巴特沃斯滤波4.5.1 低通滤波4.5.2 高通滤波4.5.3 带通滤波 ...

    项目介绍

    在此文章中,信号的导入、滤波以及时频转换将被介绍。

    代码实现

    1、导入信号

    这里我们使用三种不同频率的信号的叠加信号。

    clc
    clear
    
    fs = 1000;  % 重采样频率
    T = 1/fs;  % 周期
    n = 5;  % 1Hz频率被分成n段
    N = fs*n;  % 因为1Hz频率被分成了n段,所以频谱的x轴数组有fs*n个数
    f = (0: N-1)*fs/N;  % 将fs个频率细分成fs*n个(即原来是[0, 1, 2, …, fs],现在是[0, 1/N, 2/N, …, (N-1)*fs/N])
    t = (0: N-1)*T;  % 信号所持续的时长(N个周期)
    nHz = 10;  % 画的频谱的横坐标到nHz
    Hz = nHz*n;  % 画的频谱的横坐标的数组个数
    
    x_ori = sin(2*pi*5*t)+0.7*sin(2*pi*2*t)+0.4*sin(2*pi*7*t-1);
    

    2、加入噪声

    Noise_White = [0.3*randn(1,length(t)/2), rand(1,length(t)/2)];  % 加入白噪声
    x = x_ori + Noise_White;
    

    3、绘制原始信号的时域、频域

    figure
    subplot(211),plot(x,'k'),title('原始信号时域'),xlabel('time [s]');  % 绘制原始信号时域
    fx = abs(fft(x-mean(x)))/(N/2);  % 傅里叶变换
    subplot(212),plot(f(1:Hz), fx(1:Hz),'k'),title('原始信号频域'),xlabel('frequency [Hz]');  % 绘制原始信号频域
    

    在这里插入图片描述由频域图可以看出该信号有三个主频率成分,分别为2Hz、5Hz以及7Hz。

    4、滤波

    4.1 移动平均滤波

    b  =  [1 1 1 1 1 1]/6;
    x1 = filter(b,1,x);
    
    figure
    subplot(211),plot(x1,'b'),title('滤波后的信号'),xlabel('time [s]');
    fx1 = abs(fft(x1-mean(x1)))/(N/2);  % 傅里叶变换
    subplot(212),plot(f(1:Hz), fx1(1:Hz),'k'),title('滤波信号频域'),xlabel('frequency [Hz]');
    

    在这里插入图片描述

    4.2 中值滤波

    x1=medfilt1(x,10);
    

    在这里插入图片描述

    4.3 维纳滤波

    Rxx=xcorr(x, x);              %得到混合信号的自相关函数
    M=100;                                                             %维纳滤波器阶数
    for i=1:M                                                           
        for j=1:M
            rxx(i,j)=Rxx(abs(j-i)+N);   %得到混合信号的自相关矩阵
        end
    end
    Rxy=xcorr(x,x_ori);       %得到混合信号和原信号的互相关函数
    for i=1:M
        rxy(i)=Rxy(i+N-1);   %得到混合信号和原信号的互相关向量
    end                                                                  
    h = inv(rxx)*rxy';                                               %得到所要涉及的wiener滤波器系数
    x1=filter(h,1, x);               %将输入信号通过维纳滤波器
    
    

    在这里插入图片描述

    4.4 自适应滤波

    k=100;                                                  %时域抽头LMS算法滤波器阶数
    u=0.001;                                             %步长因子
    
    %设置初值
    x1=zeros(1,N);                                  %output signal
    x1(1:k)=x(1:k);                 %将输入信号SignalAddNoise的前k个值作为输出yn_1的前k个值
    w=zeros(1,k);                                        %设置抽头加权初值
    e=zeros(1,N);                                        %误差信号
    
    %用LMS算法迭代滤波
    for i=(k+1):N
            XN=x((i-k+1):(i));
            x1(i)=w*XN';
            e(i)=x_ori(i)-x1(i);
            w=w+2*u*e(i)*XN;
    end
    

    在这里插入图片描述

    4.5 巴特沃斯滤波

    4.5.1 低通滤波

    Wc=2*3/fs;                                          %截止频率 3Hz
    [b,a]=butter(4,Wc,'low');  % 四阶的巴特沃斯低通滤波
    x1=filter(b,a,x);
    

    在这里插入图片描述
    由图可见,3Hz以上的信号幅值明显降低。

    4.5.2 高通滤波

    Wc=2*3/fs;                                          %截止频率 3Hz
    [b,a]=butter(4,Wc,'high');  % 四阶的巴特沃斯高通滤波
    x1=filter(b,a,x);
    

    在这里插入图片描述
    由图可见,3Hz以下的信号幅值明显降低。

    4.5.3 带通滤波

    Wc1=2*1/fs;                                          %下截止频率 1Hz
    Wc2=2*6/fs;                                          %上截止频率 6Hz
    [b,a]=butter(2,[Wc1, Wc2],'bandpass');  % 二阶的巴特沃斯带通滤波
    x1=filter(b,a,x);
    

    在这里插入图片描述
    由图可见,1Hz到6Hz以外的信号幅值明显降低。

    展开全文
  • Matlab之频域滤波(十五)

    千次阅读 2020-04-15 16:57:50
    基本概念就不概述了,我们都知道要进行滤波有空域和频域两种形式,而频域上的分析实际上就是进行傅里叶变换之后的结果的分析。而实际的图形中傅里叶变换之后所得中心会分布到图像四个角上,故就要进行频谱移中 这...

    基本概念就不概述了,我们都知道要进行滤波有空域和频域两种形式,而频域上的分析实际上就是进行傅里叶变换之后的结果的分析。而实际的图形中傅里叶变换之后所得中心会分布到图像四个角上,故就要进行频谱移中

    这部分是补充内容,具体可以结合这篇博客来学习一下
    https://blog.csdn.net/qq_44790423/article/details/104740105

    整体思路的实现代码为:

    %假设原图大小为M×N
    F = fft2(f);  %傅里叶变换
    F = fft2(f, P, Q); %填充零使图像大小为P×Q
    F1 = fftshift(F); %频谱移中
    f2 = ifftshift(F1); %逆变换回空域再显示图像
    

    故我们频域中的操作一般都是逆变换之前进行所需要的操作即可。

    频域滤波器

    建立网格数组
    function [U, V] = dftuv(M, N)
    u = 0 : (M-1);
    v = 0 : (N-1);
    idx = find(u>M/2);
    u(idx) = u(idx) - M;
    idy = find(v >N/2);
    v(idy) = v(idy) - N;
    [V, U] = meshgrid(v, u);
    
    [U, V] = dftuv(8,5);
    D = U.^2 + V.^2
    %计算矩阵中的每个点到原点的距离
    

    可得到如下结果:

    D =
         0     1     4     4     1
         1     2     5     5     2
         4     5     8     8     5
         9    10    13    13    10
        16    17    20    20    17
         9    10    13    13    10
         4     5     8     8     5
         1     2     5     5     2
    
    低通滤波器
    f = imread('moon.tif');
    [h,w] = size(f);
    [U,V] = dftuv(h, w);
    D0 = 0.5*w; %取截止频率为图片宽度的0.5
    F = fftshift(fft2(f, h, w)); %转换为频域再用fftshift进行平移
    H = exp(-(U.^2 + V.^2)/(2*(D0^2)));
    G = F.*H;   %频域内滤波
    g = ifft2(ifftshift(G)); %回到空域
    g = g(1: size(f, 1), 1: size(f, 2)); %截取图片出来
    
    figure
    subplot(121)
    imshow(fftshift(H), []);
    
    subplot(122)
    imshow(log(1+abs(F)), []);
    
    figure
    subplot(121)
    imshow(f)
    subplot(122)
    imshow(g);
    

    下图为低通滤波器和移中后的频域波形
    在这里插入图片描述
    下图为原图和经低通滤波器的波形(只可以看到图形的大致轮廓)
    在这里插入图片描述

    绘制线框图和表面图

    一般使用函数mesh

    线框图mesh
    mesh(H)
    %绘制一个x=1:M 和y= 1:N的线框图,其中[M,N]=size(H)
    

    该若M和N很大,则线框图的密集程度会大到不可接受,在这种情况下,我们可以使用语法

    mesh(H(1:k:end,1:k:end))
    %绘制第k个点
    %沿每个轴4060个细分可在外观与分辨率之间提供了较好的平衡
    
    colormap
    %绘制彩色的线
    colormap([0 0 0]) %设为黑色
    

    补充:

    grid off %关闭网格
    axis off %关闭坐标轴
    view(az, e1) %控制观测位置,az为方位角,e1为仰角
    

    举个例子:

    f = imread('moon.tif');
    [h,w] = size(f)
    [U,V] = dftuv(h, w);
    D0 = 50; %取截止频率为图片宽度的0.5
    F = fftshift(fft2(f, h, w)); %转换为频域再用fftshift进行平移
    H = exp(-(U.^2 + V.^2)/(2*(D0^2)));
    H = fftshift(H);
    
    subplot(221)
    mesh(H(1:10:540, 1:10:466))
    axis([0 48 0 50 0 1])
    
    subplot(222)
    mesh(H(1:10:540, 1:10:466))
    colormap([0 0 1])
    
    subplot(223)
    mesh(H(1:10:540, 1:10:466))
    grid off
    axis off
    
    subplot(224)
    mesh(H(1:10:540, 1:10:466))
    grid off
    axis off
    view(-25, 0)
    

    在这里插入图片描述

    表面图

    一般用surf

    [Y X] = meshgrid(-2:0.1:2, -2:0.1:2);
    Z = X.*exp(-X.^2 - Y.^2);
    subplot(121)
    mesh(Z)
    subplot(122)
    surf(Z)
    

    在这里插入图片描述
    再对图二进行一个操作

    subplot(122)
    surf(Z)
    shading interp
    

    在这里插入图片描述

    高通滤波器
    f = imread('moon.tif');
    [h,w] = size(f);
    [U,V] = dftuv(h, w);
    D0 = 80; 
    F = fftshift(fft2(f, h, w)); %转换为频域再用fftshift进行平移
    H = 1 - exp(-(U.^2 + V.^2)/(2*(D0^2)));
    G = F.*H;   %频域内滤波
    g = ifft2(ifftshift(G)); %回到空域
    g = g(1: size(f, 1), 1: size(f, 2)); %截取图片出来
    
    figure
    subplot(121)
    imshow(fftshift(H), []);
    
    subplot(122)
    imshow(log(1+abs(F)), []);
    
    figure
    subplot(121)
    imshow(f)
    subplot(122)
    imshow(g);
    

    在这里插入图片描述

    在这里插入图片描述
    同低通滤波器一样,只是用1减去低通就可得到,所以原理也很简单呢!只是补充了一些小东西

    展开全文
  • 用信号发生器设计一个如下信号,信号为 :y=1.5+sin(2*pi*5*x). 信号频率为5hz 采样频率为50hz...下面是基于matlab的数据分析 clc; clear all; A=importdata('b.txt') ; L=length(A); figure subplot(311) plot
  • 基于MATLAB的语音滤波实验实验目的:在Matlab环境下对语音的频谱进行处理(数字滤波)并试听效果;在Matlab环境下对语音的抽样率进行处理(语音压缩)并试听效果实验步骤:一、音频文件的压缩(抽取)。利用windows...
  • 获取信号的数据文件来进行一系列处理,包括求信号的相关参数,做FFT,设计IIR滤波,画包络线,包络谱。
  • MATLAB中通过FFT实现filter函数的功能,并且具有更快的速度。
  • MATLAB 时域信号滤波前后

    万次阅读 2018-08-17 10:23:25
    MATLAB 时域信号滤波前后 一个展示时域信号滤波前后的demo。 代码 clear all; dt=0.02;N=512; n=1:N-1;t=n*dt; %时间序列 f=n/(N*dt); %频率序列 f...
  • matlab-fft的使用范围以及使用示例
  • 内部有加速度计的原始数据,30Hz低通滤波之后的数据,并对这两组数据进行fft变换分析,可设置合适的低通滤波器。
  • 实验作业5: 1用理想低通滤波器在频率域实现低通滤波 程序代码 I二imread'd:/jpg; I=rgb2gray(l; figure(1,imshow(l; title'原图像) s=fftshift(fft2 (I; figure(2; imshow(abs(s,[]; title'图像傅里叶变换所得频谱; ...
  • matlab实现同态滤波

    千次阅读 2019-04-23 20:05:51
    同态滤波的原理框图 matlab代码: clear,clc; Img = imread('tape.png'); L = size(Img); % 计算图像大小 if numel(L)>2 %判断图像是否是彩色图像 gra...
  • 数字图像处理三级项目 高通低通带通滤波器 摘要 在图像处理的过程中 , 消除图像的噪声干扰是一个非常重要的问题利用 matlab 软件 , 采用频域滤波的方式 , 对图像进行低通和高通滤波处理低通滤波 是要保留图像中的...
  • 前言频谱分析是观察和测量信号幅度和信号失真的一种快速方法,其显示结果可以直观反映出输入信号的傅立叶变换的幅度。信号频域分析的测量范围极其宽广,超过140dB,这使得频谱分析仪...利用这些信息,可以进行电路或...
  • MATLAB--运用傅里叶变换对信号进行简单的滤波

    千次阅读 多人点赞 2019-10-10 18:59:18
    运行FFT进行变换时需要考虑奈奎斯特之后的振幅和相位,进行傅里叶逆变换的时候是取N个点进行变换,而不是取一半。 下面以一个实例进行说明 信号:x=0.5sin(2pi3t)+cos(2pi10*t),滤除8Hz-12Hz的信号。...
  • 1、均值滤波可以有效地去除叠加在低频信号上的噪声 2、已知已调信号 ,其中调制信号 ,载波为 。使用FFT分析该已调信号的频谱并对它进行解调,以恢复原调制信号。
  • 利用傅里叶变换得到频域,然后将不需要的频点置零,然后进行反变换,进行滤波
  • 适用于matlab的.m文件,完成1024点FFT,内含5个m文件。
  • Matlab实现图像高通滤波

    热门讨论 2012-03-04 14:04:53
    图像处理的matlab代码:Matlab实现图像高通滤波
  • MATLAB教学视频,信号处理与系统分析类:本期视频时长约65分钟,通过八个精选的案例,极尽详细地讲解时域信号通过理想低通、理想高通、理想带通、理想带阻、RC低通、RC高通、...诠释了傅里叶变换FFT和频域滤波的本质。
  • 数字信号处理:运用FFT简单滤波

    万次阅读 2018-09-30 11:43:13
    通过快速Fourier变换我们可以知道信号序列中含有...那么,我们就可以通过将频率域中的某些频率成分的振幅置零,然后运用逆变换到时间域实现滤波。 举例说明: clear all dt = 0.02; N = 206; n = 0:N-1; t = n*dt; ...
  • 仿真匹配滤波器的FFT-IFFT的实现,采用矩形脉冲信号,观察滤波前后的波形,分析匹配滤波器对矩形脉冲的压缩前后的性质。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,171
精华内容 1,668
关键字:

matlab利用fft滤波

matlab 订阅