导航:首页 > 净水问答 > 双线性过滤matlab

双线性过滤matlab

发布时间:2022-01-12 14:12:05

1. 关于matlab的双线型变换

1、你手算的有错误吧?按照z=(2-s)/(2+s)替换,不应该是你写的结果:

>>symszs
>>g=(3*z-4)/(z^2-2*z+1);
>>g1=simple(subs(g,z,(2+s)/(2-s)))
g1=
1/4*(-4+16*s-7*s^2)/s^2

2、直接用d2c(g)并不是使用双线性变换法,而是使用默认的零阶保持法(zoh)。

3、双线性变换法应该用d2c(g,'tustin')

>>d2c(g,'tustin')

Transferfunction:
-1.75s^2+4s-1
-------------------
s^2

和上面使用符号运算得到的结果是一致的。

2. 用双线性变换法分别设计数字Butterworth低通、高通和带通滤波器(IIR),使用MATLAB或者C语言编程实现数字B

97页

3. 请MATLAB高手指教,音乐信号滤波去噪—用双线性变换法设计一个巴特沃兹滤波器,在设计巴特沃兹滤波器的时

s=10;...
[N,wn]=buttord(wp,ws,Rp,Rs,'s');...
[num,den]=butter(N,wn,'s');...
wa=0:(3*ws)/511:3*ws;...
h=freqs(num,den,wa);...
plot(wa/(2*pi),20*log10(abs(h)));grid
title('传输函数');...
n=0:1/255:5;...
x1=cos(2*pi*n);x2=cos(2*pi*9*n);...
y=filter(h,1,x1+x2);...
subplot(2,2,1)
plot(n,x1);grid
title('x1');
subplot(2,2,2)
plot(n,x2);grid
title('x2');
subplot(2,2,3)
plot(n,x1+x2);grid
title('x1+x2');
plot(n,x1+x2);
title('x1+x2');
subplot(2,2,4)
plot(n,y);grid...

4. 利用MATLAB结合双线性变换法设计一个数字切比雪夫带通IIR滤波器

通带频率0.2*pi,截止频率0.3*pi通带衰减波纹比1dB,阻带衰减15dB
>> wp=0.2*pi;
>> ws=0.3*pi;
>> Rp=1;
>> As=15;
>> T=1;Fs=1/T;
>> OmegaP=(2/T)*tan(wp/2);
>> OmegaS=(2/T)*tan(ws/2);
>> [cs,ds]=afd_chb1(OmegaP,OmegaS,Rp,As);

*** Chebyshev-1 Filter Order= 4
>> [b,a]=bilinear(cs,ds,Fs);%双线性变换
>> [C,B,A]=dir2cas(b,a)

当然先得加上2个M函数,是频带变换的
函数1

function [b,a]=afd_chb1(Wp,Ws,Rp,As);
% Analog Lowpass Filter Design:Chebyshen-1
%----------------------------------------------
% [b,a]=afd_chb1(Wp,Ws,Rp,As);
% b=Numerator coefficients of Ha(s)
% a=Denominator coefficients of Ha(s)
% Wp=Passband edge frequency in rad/sec ;Wp>0
% Ws=Stopband edge frequency in rad/sec;Ws>Wp>0
% Rp=Passband ripple in +dB;(Rp>0)
% As=Stopband attenuation in +dB;(As>0)
%
if Wp<=0
error('Passband edge must be large than 0')
end

5. 基于双线性变换法用MATLAB设计低通、高通、带通滤波器

我当时改写的课程设计程序,希望对你有帮助(参数自己改,很容易的)
%%%%%%%%%%%%% 低通滤波 %%%%%%%%%%%%%%%%
clear;
clear clf;
%%% 对连续时间信号进行采样
f1=2;f2=5;f3=8;
fs=20;Ts=1/fs;
M=200;
k=0:M-1;
fk=cos(2*pi*f1*k*Ts)+cos(2*pi*f2*k*Ts)+cos(2*pi*f3*k*Ts);
%figure(1)
subplot(411)
plot(k,fk)%stem(k,fk)
xlabel ' '
title '滤波前的波形图';

N = M;
F = fft(fk, N);
subplot(412)
plot(2*pi*(0:N/2-1)/N/pi, 2*abs(F(1:N/2))/N);
xlabel ' '
title '滤波前的频谱曲线';

h=[0.00111829516864 -0.00389476479172 -0.01603491745519 -0.02036377118215 0.02095180705130 0.12449781344246...
0.24450683184615 0.2984374118 0.24450683184615 0.12449781344246 0.02095180705130 -0.02036377118215...
-0.01603491745519 -0.00389476479172 0.00111829516864];
yk = conv(fk,h);

%figure(2)
subplot(413)
plot(0:M+15-2,yk,'g')%stem(0:M+15-2,yk)
xlabel ' '
title '低通滤波后的波形图';
axis([0 M -1 1])
Y = fft(yk, N);
subplot(414)
plot(2*pi*(0:N/2-1)/N/pi, 2*abs(Y(1:N/2))/N,'g');
title '低通滤波后的频谱曲线';
%===================注:与高通滤波不同之处在于h的取值
%%%%%%%%%%%%% 课程设计(2) %%%%%%%%%%%%%
%%%%%%%%%%%%% 高通滤波 %%%%%%%%%%%%%%%%
clear;
clear clf;
%%% 对连续时间信号进行采样
f1=2;f2=5;f3=8;
fs=20;Ts=1/fs;
M=200;
k=0:M-1;
fk=cos(2*pi*f1*k*Ts)+cos(2*pi*f2*k*Ts)+cos(2*pi*f3*k*Ts);
%figure(1)
subplot(411)
plot(k,fk)
xlabel ' '
title '滤波前的波形图';

N = M;
F = fft(fk, N);
subplot(412)
plot(2*pi*(0:N/2-1)/N/pi, 2*abs(F(1:N/2))/N);
xlabel ' '
title '滤波前的频谱曲线';

h=[-0.00111829516864 -0.00389476479172 0.01603491745519 -0.02036377118215 -0.02095180705130 0.12449781344246...
-0.24450683184615 0.2984374118 -0.24450683184615 0.12449781344246 -0.02095180705130 -0.02036377118215...
0.01603491745519 -0.00389476479172 -0.00111829516864];
yk = conv(fk,h);

%figure(2)
subplot(413)
plot(0:M+15-2,yk)
xlabel ' '
title '滤波后的波形图';
axis([0 M -1 1])
Y = fft(yk, N);
subplot(414)
plot(2*pi*(0:N/2-1)/N/pi, 2*abs(Y(1:N/2))/N);
title '滤波前的频谱曲线';
%%%%%%%%%%%%% 课程设计(4) %%%%%%%%%%%%%
%%%%%%%%%%%%% 带通滤波 %%%%%%%%%%%%%%%%
clear;
clear clf;
%%% 对连续时间信号进行采样
f1=2;f2=5;f3=8;
fs=20;Ts=1/fs;
M=200;
k=0:M-1;
fk=cos(2*pi*f1*k*Ts)+cos(2*pi*f2*k*Ts)+cos(2*pi*f3*k*Ts);
subplot(411)
plot(k,fk)
xlabel ' '
title '滤波前的波形图'

N = M;
F = fft(fk, N);
subplot(412)
plot(2*pi*(0:N/2-1)/N/pi, 2*abs(F(1:N/2))/N);
xlabel ' '
title '滤波前的频谱曲线'

h=[ 0 0.00809904403983 0 0.04234583818052 0 -0.25888938815435 0 0.41372763540994 0 -0.25888938815435 0 0.04234583818052 0 0.00809904403983 0];
yk = conv(fk,h);

figure(2)
subplot(413)
plot(0:M+15-2,yk)
axis([0 M -1 1])
Y = fft(yk, N);
subplot(414)
plot(2*pi*(0:N/2-1)/N/pi, 2*abs(Y(1:N/2))/N);
title '滤波前的频谱曲线'
%%%%%%%%%%%%% 课程设计(4) %%%%%%%%%%%%%
%%%%%%%%%%%%% 带阻滤波 %%%%%%%%%%%%%%%%
clear;
clear clf;
%%% 对连续时间信号进行采样
f1=2;f2=5;f3=8;
fs=20;Ts=1/fs;
M=200;
k=0:M-1;
fk=cos(2*pi*f1*k*Ts)+cos(2*pi*f2*k*Ts)+cos(2*pi*f3*k*Ts);

subplot(411)
plot(k,fk)
xlabel ' '
title '滤波前的波形图'
N = M;
F = fft(fk, N);
subplot(412)
plot(2*pi*(0:N/2-1)/N/pi, 2*abs(F(1:N/2))/N);
xlabel ' '
title '滤波前的频谱曲线'

h=[ 0 -0.00780645449547 0 -0.04081603423850 0 0.24953663889817 0 0.59817169967160...
0 0.24953663889817 0 -0.04081603423850 0 -0.00780645449547 0];
yk = conv(fk,h);

subplot(413)
plot(0:M+15-2,yk,'r')
xlabel ' '
title '带阻滤波后前的波形图'
axis([0 M -1 1])
Y = fft(yk, N);
subplot(414)
plot(2*pi*(0:N/2-1)/N/pi, 2*abs(Y(1:N/2))/N,'r');
title '带阻滤波前的频谱曲线'

6. 利用MATLAB结合双线性变换法设计一个IIR数字butterworth低通滤波器

在命令窗口输入
wp=1k/10k
ws=1.5/10
rp=1.5db
rs=25
[N,Wn]=BUTTORD(wp,ws,rp,rs)
[b,a]=butter(n,wn)
freqz(b,a)
搞定

7. 联系matlab用双线性变换法设计Butterworth低通滤波器m

%下面程序可能对你有用,需根据你的指标修改一下前5行相关参数就行,至于最后显示部分,相应变化一下即可。
%1.用Butterworth低通模拟滤波器原型%%%%%%%%%%%%%%%%%%%%%%%%%%%%数字滤波器指标
Wp=0.3*pi; %通带边界频率(归一化):wp=fp*2*pi/fs
Ws=0.5*pi; %阻带边界频率(归一化):ws=fr*2*pi/fs
Rp=0.5; %通带波纹
As=40; %阻带衰减
%转换为模拟滤波器指标(预畸);
Ts=0.000125;fs=8000;
OmegaP=(2/Ts)*tan(Wp/2); %模拟低通原型滤波器通带频率
OmegaS=(2/Ts)*tan(Ws/2); %模拟低通原型滤波器阻带频率

[N,OmegaC]=buttord(OmegaP,OmegaS,Rp,As,'s'); %模拟巴特沃斯滤波器的阶数和-3dB截止频率计算,这时要加字符's'。
[z0,p0,k0]=buttap(N); %设计归一化巴特沃兹滤波器低通原型
%进行非归一化处理
p=p0*OmegaC; z=z0*OmegaC;
k=k0*OmegaC^N;
ba=k*real(poly(z));
aa=real(poly(p));

[bd,ad]=bilinear(ba,aa,fs); %双线性变换
[h,w]=freqz(bd,ad); %计算频率响应
am=20*log10(abs(h));
ph=angle(h);
%绘图
subplot(2,1,1);plot(w/pi,am);
axis([0 1 -250 5]);
xlabel('w(以pi为单位)');ylabel('|H(ejw)|以dB为单位');
set(gca,'XTickMode','manual','XTick',[0 0.3 0.5 1]);
set(gca,'YTickMode','manual','YTick',[ -40 0]);grid;
subplot(2,1,2);plot(w/pi,ph/pi);xlabel('w(以pi为单位)');ylabel('相位以pi为单位');

8. 用双线性变换法设计一个数字巴特沃斯型带阻滤波器 用MATLAB编程 急!!!

%当1KHz≤f≤2KHz时,衰减至少为18 dB,当f≤500Hz,f≥3KHz时,波纹在3dB内,采样频率fs为10KHz。
%要求采用巴特沃斯型模拟滤波器进行设计,画出所设计滤波器的幅度特性曲线,并写出其系统函数H(z)的表达式。 f和pi之间怎么转化呢?f≤500Hz,f≥3KHz这在程序中怎么表示?求完整程序 急!!!
clear all
close all
clc

fs=10*1e+3;
fsl=1*1e+3;
fsh=2*1e+3;
% fpl=500;
fpl=800;
fph=3*1e+3;
alphal=18;
alphah=3;

ws1=fsl/fs;
ws2=fsh/fs;
wp1=fpl/fs;
wp2=fph/fs;
wp=[wp1 wp2];
ws=[ws1 ws2];
[n,Wn] = buttord(wp,ws,alphah,alphal);
[z,p,k] = buttap(n);
b=poly(z);
a=poly(p);
Wo=sqrt(2*pi*fpl*2*pi*fph);
Bw=2*pi*fph-2*pi*fpl;
[bt,at] = lp2bs(b,a,Wo,Bw)
[numd,dend] = bilinear(bt,at,fs)
[H,w]=freqz(numd,dend);
plot(w/pi*fs/2,abs(H))
grid

9. 利用双线性变换及BW型模拟滤波器设计一个滤IIR带同数字滤波器 利用MATLAB实现的程序代码以及增益响应图

取双线性变换的参数T=2
1)由w=tan(W/2)获得模拟带通滤波器的频率指标。
wp2 =1.1708, wp1 =0.8541, ws2 =1.3764, ws1 =0.7265
2) 确定变换式中的参数
B = wp2- wp1 =0.3168 w0 =sqrt(wp2 wp1)=1;
3)由ω′ =(ω²-ω0²)/Bω确定归一低通滤波器的阻带参数
ω′s1=-2.0515 ω′s2=2.0515
取:ω′s=2.0515
4)确定归一化BW低通滤波器
由 N=buttord(1,ws,Ap,As,'s');
得 N=2
HL0(s)=1/(s²+2½s+1)
5)由变换获得模拟带通滤波器
Habp(s)=0.1003S²/(S¹+³+0.448S³+2.1003S²+0.448S+1)
6)由双线性变换获得数字带通滤波器
[b,a]=bilinear(bBP,aBP,0.5)
HBP(Z)=(0.020083-0.040167Z-²+0.020083Z-¹-³)/(1+1.561Z-²+0.64135Z-¹-³)

阅读全文

与双线性过滤matlab相关的资料

热点内容
皮革行业含碱废水 浏览:288
鱼缸双侧过滤连接步骤 浏览:735
雨污水管线的材质 浏览:968
施特劳斯智饮机滤芯是什么 浏览:631
污水处理产业扶持政策有哪些 浏览:811
锦鲤鱼池过滤泵流量 浏览:711
超滤器是什么意思 浏览:881
纯水静静怎么打 浏览:846
超滤截COD 浏览:914
电子超纯水水罐用什么材质 浏览:49
清除水垢硅磷晶 浏览:519
crv空气净化器怎么打开 浏览:526
反渗透膜低温清洗 浏览:785
郑州过滤王管理中心地址 浏览:872
水水垢成分 浏览:866
陕西原装外置污水提升泵要多少钱 浏览:419
聚聚乙烯树脂粉袋 浏览:739
饮水机漏水属于什么原因 浏览:824
污水厂硝化脱模怎么处理 浏览:924
vue2内置过滤器 浏览:386