📄 fir(可用).txt
字号:
clear;clc;
%% 由于每次的噪声不同,所以效果还是有些差异的。
%% 无限长
%% 优点:低阶可获得高选择性,设计简单,有表可查
%% 缺点:必须采用递归结构,调整复杂,速度慢,线性相位较差,波形前断失真,滤波效果不好。
%% 适应范围:语言通讯
%% 有限长
%% 优点:线性相位好,滤波速度快(fft),非递归结构,误差低。
%% 缺点:高阶才能获得高选择性,信号延时大,设计必须要程序实现,无表可查。
%% 适用范围:图像信号处理,数据传输
% 1.信号噪声产生
N=256; % 长度
f=50; % 信号频率
Ts=1/800; % 采样周期
% 信号
p=1:N;
y=sin(2*pi*f*p*Ts);
% 噪声
y_noise=y+0.8*randn(1,N);
figure(1);
subplot(2,1,1);
plot(y);
title('信号');
subplot(2,1,2);
stem(abs(fft(y)));
title('信号谱');
figure(2);
subplot(2,1,1);
plot(y_noise);
title('信号噪声');
subplot(2,1,2);
stem(abs(fft(y_noise)));
title('信号噪声谱');
% 2.IIR滤波器设计
%% 无限长(Elliptic)
%% 带通滤波器,通带f-f1hz~f+f1hz,阻带f+f2hz~f-f2hz
%% 以半抽样频率归一化
%% f1,f2,alphap,alphas必须调整
f1=10; % 通带间隔
f2=15; % 阻带间隔
alphap=1; % 通带纹波
alphas=60; % 阻带衰减
[n_iir,Wn_iir]=ellipord([f-f1 f+f1]*2*Ts,[f-f2 f+f2]*2*Ts,alphap,alphas); % 获得阶数
[biir,aiir]=ellip(n_iir,alphap,alphas,Wn_iir); % 获得滤波器系数
% 3.滤波开始
y_iir=filter(biir,aiir,y_noise);
figure(3);
subplot(2,1,1);
plot(y_iir);
title('无限长滤波后信号');
subplot(2,1,2);
stem(abs(fft(y_iir)));
title('无限长滤波后信号的谱');
% 4.FIR滤波器设计
%% 有限长(窗函数线性相位)
%% 带通滤波器,通带f-f3hz~f+f3hz
%% 以半抽样频率归一化
%% f3,N_fir必须调整
f3=3; % 通带间隔
Wn_fir=[f-f3,f+f3]*2*Ts; % 归一化通带
N_fir=80; % 滤波器长度(一般较高)
bfir=fir1(N_fir,Wn_fir,'bandpass'); % 获得滤波器系数
% 5.滤波开始
%% 用圆周卷效果更好
y_fir=conv(bfir,y_noise); %%卷积
y_fir=wkeep(y_fir,length(y)); %%保持(保持与源信号长度一样)
figure(4);
subplot(2,1,1);
plot(y_fir);
title('有限长滤波后信号');
subplot(2,1,2);
stem(abs(fft(y_fir)));
title('有限长滤波后信号的谱');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -