Fs=100;
T=1/Fs;
t=0:T:1;
w=2*pi*5; %模拟量,数字角频率用所使用的双线性变换法等一些方法的转换公式求出
%%
%%原始信号
y1=sin(w*t); %创建信号
figure('position',[0,50,700,600],'name','原始信号'); %设置图形窗口的位置大小
subplot(321); %设置窗口内小图的位置,在x行,y列的第n个地方出现
plot(1*t,y1,'--r'); %画图,用----线,红色
title('原始信号1时域');
Y1=fft(y1); %对y1进行FFT
subplot(322);
stem(t,real(Y1),'.r');xlabel('单位:Hz');ylabel('幅度'); %画离散竖线图,端点用.表示。
title('原始信号1频谱');
y2=2*sin(4*w*t);
subplot(323);
plot(1*t,y2,'-.g');
title('原始信号2时域');
Y2=fft(y2);
subplot(324);
stem(t,real(Y2),'.g');xlabel('单位:Hz');ylabel('幅度');
title('原始信号2频谱');
%叠加
y=y1+y2;
subplot(325);
plot(1*t,y,'m');
title('叠加信号时域');
Y=fft(y);
subplot(326);
stem(t,real(Y),'.m');
title('叠加信号频谱');xlabel('单位:Hz');ylabel('幅度');
%%
%%滤波器:
%IIR滤波器(巴特沃斯双线性变换法设置)
rp=0.1;rs=12; %通阻带波动用同一个值
%低通
wpz=0.15;wsz=0.2; %省略pi,在后面有添加
%%%1 分步设置
wp=2*tan(wpz*pi/2);ws=2*tan(wsz*pi/2); %预畸变校正转换指标,将畸变数字角频率技术指标wpz,wsz转化成模拟正常的
[N,wc]=buttord(wp,ws,rp,rs,'s'); %设计模拟滤波器,用于计算模拟巴特沃斯滤波器的阶数和3dB截止频率,不加's'求的是数字的
[B,A]=butter(N,wc,'s'); %计算模拟滤波器系统函数的分子分母多项式系数BA
[Bz,Az]=bilinear(B,A,1); %双线性变换法转换成数字滤波器,取这里的Fs=1!!!!!
[Hk,w1]=freqz(Bz,Az); %freqs 返回模拟滤波器的H(jw)的复频域响应(拉普拉斯格式),freqz是数字的 %此时输出应为双线性变换法之后的巴特沃斯滤波器系统函数H(Z)与对应相位w1(不含pi的)
%%%2 不加s默认是数字,且为双线性的
[Nd,wdc]=buttord(wpz,wsz,rp,rs);
[B1,A1]=butter(Nd,wdc);
[h1,w11]=freqz(B1,A1);
%高通
wpzh=0.2;wszh=0.15;
[Nh,wch]=buttord(wpzh,wszh,rp,rs); %数字高通的数字阶数与截止频率
[Bh,Ah]=butter(Nh,wch,'high'); %设置high高通
[Hh,wh]=freqz(Bh,Ah); %数字高通的系统函数与w
%FIR滤波器(用汉宁窗,线性相位)
%低通,好像不需要通阻带波动
wpz=0.1;wsz=0.4;
Bt=abs(wpz-wsz); %用之前设置的通阻带求出过渡带宽
N0=ceil(6.2*pi/Bt); %查表:Bt=6.2pi/N;ceil(x)是取大于等于x的最小整数
Nl=N0+mod(N0+1,2); %确保h(n)长度是奇数,没有这个程序也会自动纠正
wcl=(wpz+wsz)/2; %求出理想截止频率
hn=fir1(Nl-1,wcl,hanning(Nl)); %fir1,窗函数法设计线性相位FIR,fir2为任意形状幅度特性窗函数法设计
HKL=freqz(hn);
%高通
hnh=fir1(Nl-1,wcl,'high',hanning(Nl)); %数据使用前面的数据,fir1改为高通'high'即可
HKLh=freqz(hnh);
%画滤波器图
%IIR
figure('position',[50,50,700,600],'name','IIR滤波器');
subplot(311);
plot(w1/pi,20*log10(abs(Hk)));
grid on %打表格
title('低通分步设计');
subplot(312);
plot(w11/pi,20*log10(abs(h1)));
grid on
title('低通默认设计');
subplot(313);
plot(wh/pi,20*log10(abs(Hh)));
grid on
title('高通设计');
%FIR
figure('position',[100,50,700,600],'name','FIR滤波器');
%l
subplot(221);
stem(hn,'.');
title('低通hn设计');
subplot(222);
plot(20*log10(abs(HKL)));
title('低通损耗函数曲线');
%h
subplot(223);
stem(hnh,'.');
title('高通hn设计');
subplot(224);
plot(20*log10(abs(HKLh)));
title('高通损耗函数曲线');
%%
%%滤波
x1=filter(Bz,Az,y); %用BZAZ构成的一维滤波器滤y波
x2=filter(B1,A1,y);
x3=filter(Bh,Ah,y);
xx1=filter(hn,1,y); %此时FIR相当于是IIR分母取1的情况,分子系数是hn
xx2=filter(hnh,1,y); %高通
%画滤波后的图
%IIR
figure('position',[150,50,700,600],'name','IIR滤波后的波形');
subplot(321);
plot(t,x1);
title('分步低通时域');
subplot(322);
stem(t,real(fft(x1)),'.');xlabel('单位:Hz');ylabel('幅度');
title('分步低通频域');
subplot(323);
plot(t,x2);
title('默认低通时域');
subplot(324);
stem(t,real(fft(x2)),'.');xlabel('单位:Hz');ylabel('幅度');
title('默认低通频域');
subplot(325);
plot(t,x3);
title('高通时域');
subplot(326);
stem(t,real(fft(x3)),'.');xlabel('单位:Hz');ylabel('幅度');
title('高通频域');
%FIR
figure('position',[200,50,700,600],'name','FIR滤波后的波形');
subplot(221);
plot(t,xx1);
title('低通时域');
subplot(222);
stem(t,real(fft(xx1)),'.');xlabel('单位:Hz');ylabel('幅度');
title('低通频域');
subplot(223);
plot(t,xx2);
title('高通时域');
subplot(224);
stem(t,real(fft(xx2)),'.');xlabel('单位:Hz');ylabel('幅度');
title('高通频域');
海神之光
- 粉丝: 5w+
- 资源: 6110
最新资源
- 技术资源分享-我的运维人生-《Django 项目数据初始化与管理脚本》
- formatted-task022-cosmosqa-passage-inappropriate-binary.json
- formatted-task021-mctaco-grammatical-logical.json
- 大模型使用技巧入门教程.docx
- formatted-task020-mctaco-span-based-question.json
- formatted-task019-mctaco-temporal-reasoning-category.json
- 技术资源分享-我的运维人生-Vue 应用数据交互与状态管理脚本
- formatted-task018-mctaco-temporal-reasoning-presence.json
- formatted-task017-mctaco-wrong-answer-generation-frequency.json
- 一个基于用手写的非常正常的图片
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈