基於matlab的數字陷波器設計

2021-06-15 04:57:44 字數 1432 閱讀 3060

基於matlab的數字陷波器設計

陷波器是一種簡單的二階iir濾波器,其幅度響應在某一頻率上為零,可用來消除某個頻率分量,如:濾除訊號中由電源引起的50hz工頻干擾。其系統函式為:

其中:ω0=2πf0/fs---陷波數字頻率(rad);f0---陷波頻率(hz);fs---取樣頻率(hz);

r----常數。

實驗要求:程式設計實現以下功能:

1)設陷波頻率f0=50hz,取樣頻率fs=600hz,r=0.9,畫h(z)的幅頻和相頻特性。

2)畫h(z)的零極點圖,體會陷波原理。

3)利用該陷波器對訊號:x(n)=2*sin(2*pi*50/fs*n)+sin(2*pi*100/fs*n) (n=0~599)進行濾波,畫出x(n)及濾波輸出y(n)。

程式**:

%數字陷波器

clear

clcf0=50;fs=600;r=0.9;

w0=2*pi*f0/fs;

b=[1 -2*cos(w0) 1];

a=[1 -2*r*cos(w0) r*r];

n=1024;

[h,w]=freqz(b,a,n);

subplot(221);plot(w,abs(h));grid on;title('陷波器的幅頻響應');

subplot(222);plot(w,angle(h));grid on;title('陷波器的相頻響應');

subplot(223);zplane(b,a);grid on;title('陷波器的零極點圖');

n=0:n-1;

x=sin(2*pi*50*n/fs)+sin(2*pi*100*n/fs);

x=fft(x,n);

y=filter(b,a,x);

y=fft(y,n);

f=fs/n*(0:n/2-1);

figure;

subplot(221);plot(n,x);grid on;title('原訊號x(n)');

subplot(222);plot(f,abs(x(1:n/2)));grid on;title('x(n)的幅頻譜');

subplot(223);plot(n,y);grid on;title('陷波器濾波後的訊號y(n)');

subplot(224);plot(f,abs(y(1:n/2)));grid on;title('y(n)的幅頻譜');

程式執行結果圖:

matlab基於樸素貝葉斯變換的手寫數字識別

歡迎各位大佬的指點。原理部分參考大佬的即可。原始碼總共由三部分組成,fun1.m fun2.m predeal.m。訓練集在同資料夾下名為training資料夾內,內含 1 2 等等資料夾,各個資料夾內有1.1,1.2等等 為了便於處理,原圖大小均為50 50,命名方式統一為 n.n.png 如下圖...

數字訊號處理 基於MATLAB的線性累加平均演算法

原始訊號為正弦訊號,通過matlab程式設計給正弦訊號加入高斯白雜訊。將含有雜訊的訊號通過線累加平均演算法來去除雜訊。線性累加演算法 clc clear 1 加入高斯白雜訊 fi 1 正弦訊號頻率 fs 100 取樣頻率 t 0 1 fs 10 f 1 sin t 2 sin 2 t 原始訊號 y1...

基於REST架構的Web Service設計

先前我曾經介紹過利用apache axis實現基於soap的web service實現技術和相關 總的來說,soap的web service解決方案雖然較為成熟,且安全性較好,但是使用門檻較高,在大併發情況下會有效能問題,在網際網路上使用不太普及,因此並不太適合web 2.0 服務使用,目前大量的w...