理想低通滤波器matlab代码

您所在的位置:网站首页 低通滤波器介绍图解大全 理想低通滤波器matlab代码

理想低通滤波器matlab代码

2024-07-12 21:39| 来源: 网络整理| 查看: 265

Matlab中自带工具箱FDATool也能很方便快速的实现滤波器系数h的整定,可以方便应用到嵌入式(大多数基于FIR滤波设计)、FPGA、DSP里的FIR系数当中,本文将描述基于MATLAB下FDATool生成FIR的实用方法。

FDATool打开,可以直接在命令窗口键入fdatool回车即可启动,也可以通过UI界面打开,操作如下:

aad933de218e4e05cbb5bb62473337f2.png UI界面下打开 FDATool

这里通过图解快速进行一个FIR设计一个低通滤波器,

滤波类型(Filter Type)= Lowpass

2. 采样率(Fs) = 1000HZ

3. 滤波阶数(order) = 16(阶数越大,滤波品质越好,但相对滞后越大)

4. 密度因子( Density Factor)= order+1 = 17

5. Fpass(通频带)= 95HZ

6. Fstop(截止带)= 105HZ

7. Wpass(通频带宽增益期望)= 1DB

8. Wstop(截止带宽增益期望)= -40DB

具体FDA设计图:

d44e9df0bbe9f87c94fe194abd76303e.png FDA设计FIR滤波器

生成FIR系数,笔者建议,直接生成ASCII复制出来放到需要运行的工程。File→Export然后保存ASCII格式,这时候MATLAB将会自动打开该文件(也可以通过记事本打开)。

901ff1f8592f3559d645075b64b2a478.png FIR系数保存成ACSII格式

fec31aec7e5941ee7757d2faef630b0c.png FIR系数内容,取Numberator部分

最后,用该系数进行FIR滤波处理,详见代码(强烈建议将FIR的h系数拷贝到工程里面):

clear all clc %FIR h 1000HZ lopass Fpass = 95HZ Fstop = 105HZ h = [0.013645230215860393307991671463241800666 0.020864467885159766052938223879209544975 0.033805656970854927600989014990773284808 0.048945673554616375700021535521955229342 0.064942719858356201534377305506495758891 0.080076064347642750274047784841968677938 0.092538395154703717571109677919594105333 0.100751060201654682457750311641575535759 0.103616541625144178984108123131591128185 0.100751060201654682457750311641575535759 0.092538395154703717571109677919594105333 0.080076064347642750274047784841968677938 0.064942719858356201534377305506495758891 0.048945673554616375700021535521955229342 0.033805656970854927600989014990773284808 0.020864467885159766052938223879209544975 0.013645230215860393307991671463241800666]; Fs = 1000; % Sampling frequency HZ T = 1/Fs; % Sampling period S N = 2000; % Number of signal t = (0:N-1)*T; % Time vector %构造一个信号,其中包含幅值为 0.7 的 50 Hz 正弦量和幅值为 1 的 120 Hz 正弦量 y1 = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t); %利用h系数进行FIR滤波 y2 = filter(h',1,y1); %波形快速傅里叶运算 Y1 = fft(y1); Y2 = fft(y2); %计算双侧频谱P2 P1_2 = abs(Y1/N); %取出前面一半进行分析 P1_1 = P1_2(1:N/2+1); %最终转化为单侧幅频 P1_1(2:end-1) = 2*P1_1(2:end-1); %计算双侧频谱P2 P2_2 = abs(Y2/N); %取出前面一半进行分析 P2_1 = P2_2(1:N/2+1); %最终转化为单侧幅频 P2_1(2:end-1) = 2*P2_1(2:end-1); %确定频域映射,转化为HZ f = Fs*(0:(N/2))/N; subplot(4,1,1); plot(t,y1); title('原始信号0.7幅值50HZ,1幅值120HZ') subplot(4,1,2); plot(f,P1_1); title('原始信号FFT分析') subplot(4,1,3); plot(t,y2); title('FIR滤波后波形') subplot(4,1,4); plot(f,P2_1); title('FIR滤波后FFT')

7f26d13ad37aae464eb396e27f604bf6.png FIR数据滤波后图形演示


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3