zoukankan      html  css  js  c++  java
  • 用Matlab设计一个带通有限长FIR冲激响应滤波器

    1 设计要求

    给定一个2kHz的正弦波,它受到一个均值为0,方差为0.01的白噪声干扰。用SPTool设计一个数字带通FIR滤波器来抑制此宽带噪声,以增强所需要的2kHz正弦波。此带通滤波器是根据以下的指标要求进行设计的:

    (1). 此带通滤波器的截止频率约为1800Hz和2200Hz。

    (2). 通带波纹约为1.5dB,阻带衰减约为35dB。

    (3). 滤波器为线性相位滤波器。

    (4). 应使用具有最低阶数的设计方法。

    2 设计步骤

    2.1 生成2kHz正弦波

    利用Matlab生成2kHz正弦波,Matlab脚本如下:(singen.m)

    clc
    
    clear
    
    t=1; %s 采样时长
    F=2000; %Hz 源正弦信号频率
    
    Fs=10000; %Hz 采样频率
    
    n=0:t*Fs; %采样时间序列
    
    in=sin(2*pi*F/Fs*n)+0.1*randn(1,t*Fs+1); %生成序列并加方差为0.01的白噪声干扰
    
    save in.dat in –ascii %生成的信号存于in.dat文件中
    
    plot(n./Fs,in);
    
    xlim([0,0.0005])

    注意:randn默认产生方差为1的白噪声序列,则0.1*randn产生方差为0.01的白噪声序列。产生信号的第一个周期图像如下:

    clip_image002

    在cmd中键入sptoo,打开SPTool窗口。

    单击File->import。由workspace中导入信号in及其采样频率clip_image004分别导入Data和Sampling Frequency中,并在Name标签中用in代替sig1,然后单击OK。

    clip_image006

    clip_image008

    点击上图View按钮,得到输入信号的时域波形如下图:

    clip_image010

    单击上图箭头所示按钮,放大信号可得下图:

    clip_image012

    选中in信号,在spectra中点击create按钮将弹出频谱分析窗口,如下图:

    clip_image014

    此时点击Apply,即可产生功率谱估计曲线:

    clip_image016

    可以看出此正弦波2KHz为主要频率。

    2.2 根据指标设计滤波器

    转回SPTool界面,单击滤波器设计列表下的New按钮打开FDATool。

    clip_image018

    clip_image020

    根据滤波器指标填写设计器。

    clip_image022

    点击DesignFilter 得到所设计的滤波器如下:

    clip_image024

    此时可以关掉FDATool,回到SPTool中,滤波器列表中多出了filter1,点击View可以进入FVT,在SPTool的主窗口中突出显示in和filter1,如下图:

    clip_image026

    点击Filters栏下的Apply按钮即可应用filt1进行in信号的滤波。

    此时弹出输出选项按如下图配置

    clip_image028

    点击OK后输出信号out即在Signals列表中。

    3 实验结果

    Out信号的图像如下图所示,可以点击窗口上的喇叭分别听取滤波前后的声音信号,可以发现滤波之后的信号明显要比滤波前清晰。

    clip_image030

    滤波前后频谱比较:

    clip_image032

  • 相关阅读:
    Android开发:系统自动实现开机启动
    Android高手进阶教程【转】
    android 各种控件颜色值
    Android开发博客国内最大的移动开发博客eoe移动开发者社区
    异步图片加载工具类
    Android中shape的使用
    Android的asset/res资源框架结构
    winddows 运行指令 (2)
    使用activeMQ实现jms
    ActiveMQ在C#中的应用
  • 原文地址:https://www.cnblogs.com/because/p/maltab_fir.html
Copyright © 2011-2022 走看看