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);]