matlab信号通过滤波器
『壹』 如何在matlab function模块中对某个信号进行滤波
用buttord和buffer得到了拉普拉斯变换的分子分母多项式系数a,b,
假设信号是x,则就用y=filter(b,a,x);
例如:
设计一个高通滤波器,并检验它的性能
采样率为10kHZ
阻带边缘为1.5Khz,衰减为40bB
通带边缘为2kHz,波纹为3Db
>>Fs=1e4;
>>fs=1.5e3;
>>fp=2e3;
>>As=40;
>>Rp=3;
>>wp=2*fp/Fs;
>>ws=2*fs/Fs;
>>[N,wn]=cheb2ord(wp,ws,Rp,As);
>>[b,a]=cheby2(N,As,wn,'high');
>>[db,mag,pha,grd,w]=freqz_m(b,a);
>> subplot(2,2,1);plot(w/pi,mag);
>> axis([0,1,0,1]);
>> setX([0 0.3 0.4 1]);
>>setY([0.01 0.7279 1])
>> title('Magnitude Response');
>> subplot(2,2,2);plot(w/pi,db);
>> axis([0 1 -70 0])
>> setX([0 0.3 0.4 1])
>> setY([-40 -2.7589])
>> title('Magnitude Response in dB');
然后给你一个信号x=cos(0.2*pi*n);
>>n=0:200;
>>x=cos(0.6*pi*n);
>>y=filter(b,a,x);
>>subplot(2,2,3);plot(n,x);
>>subplot(2,2,4);plot(n,y);
>>x1=fft(x,201);
>>x11=abs(x1);
>>subplot(2,2,1);stem(n,x11);
>>y1=fft(y,201);
>>y11=abs(y1);
>>subplot(2,2,2);stem(n,y11);
>>setX([0 60 140 201])
>>title('FFT of y');
>>subplot(2,2,1);stem(n,x11);
>>setX([0 60 140 201])
>>title('FFT of x');
>>g=x11-y11;
>>subplot(2,2,3);stem(n,g);
你运行一下,就可以看到结果,刚好把此信号滤掉
『贰』 matlab 带通滤波器对输入信号滤波的模拟
信号频率f1=fs/20=2.5e6, 都不在带通滤波器的通带范围内
『叁』 matlab中怎么让信号通过滤波器
1、首先打开Matlab,鼠标点击图上的图标。
『肆』 matlab中怎么将信号输入到滤波器
您好复,t=-2*pi:pi/180:2*pi;
s=sin(t);(这两句为创造一个正弦波制)
sf=filter(h,1,s);(使用滤波器对正弦波过滤,h为设计的正弦波,s是上面的正弦波)
subplot(222);
plot(t,sf);
grid;
subplot(223);
plot(t,s);
grid on;
y=fft(sf);(进行频域的变换)
subplot(224);
plot(abs(y));
grid;
『伍』 关于matlab用IIR低通滤波器对信号进行滤波去噪问题
这个我刚好做过一个滤波器,事实上对时域信号做FFT,截取一定点数再做逆FFT相当于理想滤波。设计滤波器代码如下:
f1=100;f2=200;%待滤波正弦信号频率
fs=2000;%采样频率
m=(0.3*f1)/(fs/2);%定义过度带宽
M=round(8/m);%定义窗函数的长度
N=M-1;%定义滤波器的阶数
b=fir1(N,f2/fs);%使用fir1函数设计滤波器
%输入的参数分别是滤波器的阶数和截止频率
figure(1)
[h,f]=freqz(b,1,512);%滤波器的幅频特性图
%[H,W]=freqz(B,A,N)当N是一个整数时函数返回N点的频率向量和幅频响应向量
plot(f*fs/(2*pi),20*log10(abs(h)))%参数分别是频率与幅值
xlabel('频率/赫兹');ylabel('增益/分贝');title('滤波器的增益响应');
figure(2)
subplot(211)
t=0:1/fs:0.5;%定义时间范围和步长
s=sin(2*pi*f1*t)+sin(2*pi*f2*t);%滤波前信号
plot(t,s);%滤波前的信号图像
xlabel('时间/秒');ylabel('幅度');title('信号滤波前时域图');
subplot(212)
Fs=fft(s,512);%将信号变换到频域
AFs=abs(Fs);%信号频域图的幅值
f=(0:255)*fs/512;%频率采样
plot(f,AFs(1:256));%滤波前的信号频域图
xlabel('频率/赫兹');ylabel('幅度');title('信号滤波前频域图');
figure(3)
sf=filter(b,1,s);%使用filter函数对信号进行滤波
%参数分别为滤波器系统函数的分子和分母多项式系数向量和待滤波信号输入
subplot(211)
plot(t,sf)%滤波后的信号图像
xlabel('时间/秒');ylabel('幅度');title('信号滤波后时域图');
axis([0.2 0.5 -2 2]);%限定图像坐标范围
subplot(212)
Fsf=fft(sf,512);%滤波后的信号频域图
AFsf=abs(Fsf);%信号频域图的幅值
f=(0:255)*fs/512;%频率采样
plot(f,AFsf(1:256))%滤波后的信号频域图
xlabel('频率/赫兹');ylabel('幅度');title('信号滤波后频域图');
『陆』 matlab中怎么让信号通过滤波器
1、设计一个滤波器,并画图查看性能
2、生成信号,注意采样率
3、进行卷积版
例子如下:
t
=
0:0.01:2;
f
=2*sin(2*pi*20*t)+4*sin(2*pi*60*t);
N
=
11;
%滤波器节权点个数
wc
=
0.3;
%归一化截止频率
hd
=
fir1(N,wc,'low');
%
基于加窗函数的FIR滤波器设计
figure(3)
plot(hd)
ft
=
conv(f,hd);
figure(1)
plot(abs(fft(f)));
title('原始信号f');
figure(2)
plot(abs(fft(ft)));
title('滤波后信号ft');
『柒』 求matlab高手出手相助!已知模拟信号,和模拟滤波器,怎么使用滤波器滤波
你说对了,大多数抄的书都没袭说怎么进行滤波。我估计是大多数人都搞数字信号,模拟很容易被忽略。
其实滤波本身很简单:
x=filter(b, a ,yy);
yy是你要滤的信号,注意它是个矢量,即数组。b和a是上面式子里的B,A。
滤波器的关键是在设计,即如何求B,A。你上面的那几句是远远不够的。详细的我一下说不清楚。建议你在网上找几个具体的例子体会一下就能掌握。
simulink里的滤波器是简单和直观,但是没有办法把它转换到脚本或函数里,而很多时候我们依然是要写程序的。
『捌』 MATLAB中如何实现巴特沃斯滤波器处理信号,在线等。。。
说实话,网上一大堆现成的,随便找本matlab信号处理的书也是现成的代码
给你贴一个我自己写的吧,不过我用的是切比雪夫,你自己改成巴...就行了
x是输入
function y=bandp(x,fp1,fp2,rp,rs,Fs)
%带通滤波
%x:需要滤波的序列
%fp1:通带左边界
%fp2:通带右边界
%fs1:衰减截止左边界
%fs2:衰减截止右边界
%rp:通带区衰减DB数设置
%rs:截止区衰减DB数设置
%Fs:序列x的采样频率
fp1=2;fp2=35;
fs1=1;fs2=40;
rp=3;rs=15; %%%%通带区衰减DB数设置 截止区衰减DB数设置
Fs=500;
wp1=0.08*pi;
wp2=0.14*pi;
ws1=0.01*pi;
ws2=0.16*pi;
wp=[wp1 wp2];
ws=[ws1 ws2];
%设计切比雪夫滤波器
[n,wn]=cheb1ord(ws/pi,wp/pi,rp,rs);
[bz1,az1]=cheby1(n,rp,wp/pi);
%查看设计滤波器的曲线
[h,w]=freqz(bz1,az1,256,Fs);
h=20*log10(abs(h));
figure;
ploy(w,h);
title('所设计滤波器的通带曲线');
grid on;
y=filter(bz1,az1,x);
end
『玖』 matlab里已经知道了fir滤波器的h(n).怎么将信号通过该滤波器滤波用filter函数怎么用或者别的方法
第一种方法:用函数y=filter(h,1,x);其中,y是滤波后的信号,h就是你的h(n),专x是带噪信号
第二种方法:用函属数y=fftfilt(h,x);其中,y是滤波后的信号,h就是你的h(n),x是带噪信号
『拾』 matlab 用编程表示信号通过一个积分器和一个高通滤波器
[ Fs=48000;
t=[0:1/Fs:10];
u1=1+cos(20*sin(100*pi*t));
u2=1+cos(20*sin(100*pi*t)-2*pi/3);
u3=1+cos(20*sin(100*pi*t)-4*pi/3);
v=1/3*(u1+u2+u3);
x1=u1-v;
X1 =-2000*sin(20*sin(100*pi*t)).*cos(100*pi*t).*pi;
x2=u2-v;
X2 =-2000*sin(20*sin(100*pi*t)-2/3*pi).*cos(100*pi*t).*pi;
x3=u3-v;
X3=-2000*sin(20*sin(100*pi*t)-4/3*pi).*cos(100*pi*t).*pi;
p=x1.*(X2-X3)+x2.*(X3-X1)+x3.*(X1-X2);
q=x1.^2+x2.^2+x3.^2;
f=p./q;
f1=int(f,t);]