實驗四用窗函式法設計FIR濾波器

2022-12-13 08:27:06 字數 3971 閱讀 2939

[h,w]=freqz(h,[1],1024); %求濾波器h(n)的頻率響應;對fir而言, h(z)分子分母多項式的係數向量b=[1], a=h;返回向量h的點數n =1024

db=20*log10(abs(h)+eps); %得到幅值

pha=angle(h); %得到相位

%繪製單位脈衝響應h(n)、幅頻衰減特性20lg︱h(ejw)︱)、相頻特性和幅頻特性︱h(ejw)︱的波形

figure; %加figure語句,下乙個plot所繪出的圖不會把上次的圖給取代。也可在每次執行完plot之後,加figure語句

subplot(2,2,1)

stem(n,h,'.r'); %繪製單位脈衝響應h(n)波形

axis([0,n-1,-0.1,0.3]);

xlabel('n');

ylabel('h(n)');

title('實際低通濾波器的h(n)');

text((0.28*n),0.275,string); %建立text圖形控制代碼物件函式,text(x,y,string)在圖形中指定的位置上(x,y)上顯示字串string

subplot(2,2,2)

plot(w/pi,db,'m'); %繪製幅頻衰減特性20lg︱h(ejw)︱)波形

axis([0,1,-100,0]);

xlabel('w/pi');

ylabel('db');

title('衰減特性(db)');

grid; %新增網格線

set(gca,'xtick', 0:0.2:1,'ytick',-100:20:0) %設定網格線的密度

subplot(2,2,3)

plot(w,pha); %繪製相頻特性波形

hold on;

plot(0:4,zeros(5),'-k'); %繪製零相位基線

title('相頻特性');

xlabel('頻率w(rad)');

ylabel('相位(rad)');

axis([0,3.15,-4,4]);

subplot(2,2,4);

plot(w,abs(h)); %繪製幅頻特性︱h(ejw)︱波形

title('頻率特性');

xlabel('頻率w(rad)');

ylabel('幅值');

axis([0,3.15,0,1.5]);

text(0.9,1.3,string);

n=input('輸入窗函式長度n=? (輸入0=退出)');

endplot(x,y)以x元素為橫座標值,y元素為縱座標值繪製曲線。

(1) x, y都是向量,則以x中元素為橫座標,y中元素為縱座標作平面曲線。此時x, y必須具有相同長度。

(2) x, y都是矩陣,則將x的列和y中相應的列相組合,繪製多條平面曲線。此時x, y必須具有相同的大小。

(3) x是向量, y是矩陣,若x的長度與y的行數相等,則將x與y中的各列相對應,繪製多條平面曲線;否則,若x的長度與y的列數相等,則將x與y中的各行相對應,繪製多條平面曲線。此時x的長度必須等於y的行數或列數。

%實驗四:用窗函式法設計fir數字濾波器

% matlab主程式

clear all;

close all;

b=1;

i=0;

while(b);

temp=menu('選擇窗函式長度n','n=10','n=15','n=20','n=25','n=30','n=33','n=35','n=40','n=45','n=50','n=55','n=60','n=64');

menu1=[10,15,20,25,30,33,35,40,45,50,55,60,64];

n=menu1(temp);

temp=menu('選擇逼近理想低通濾波器截止頻率wc','wc=pi/4','wc=pi/2','wc=3*pi/4','wc=pi','wc=0.5','wc=1.0','wc=1.

5','wc=2.0','wc=2.5','wc=3.

0');

menu2=[pi/4,pi/2,3*pi/4,pi,0.5,1,1.5,2,2.5,3];

w=menu2(temp);

n=[0:(n-1)];

hd=ideal(w,n); %得到理想低通濾波器

k=menu('請選擇視窗型別:','boxcar','hamming','hanning','blackman');

if k==1

b=boxcar(n);

string=['boxcar','n=',num2str(n)];

else if k==2

b=hamming(n);

string=['hamming','n=',num2str(n)];

else if k==3

b=hanning(n);

string=['hanning','n=',num2str(n)];

else if k==4

b=blackman(n);

string=['blackman','n=',num2str(n)];

endend

endendh=hd.*(b)'; %得到fir數字濾波器

[h,m]=freqz(h,[1],1024,'whole'); %求其頻率響應。whole表示在[0,2π]之間選取n個頻率點。

mag=abs(h); %得到幅值

db=20*log10((mag+eps)/max(mag));

pha=angle(h); %得到相位

i=i+1;

figure(i)

subplot(2,2,1);

n=0:n-1;

stem(n,h,'.');

axis([0,n-1,-0.1,0.3]);

hold on;

n=0:n-1;

x=zeros(n);

plot(n,x,'-');

xlabel('n');

ylabel('h(n)');

title('實際低通濾波器的h(n)');

text((0.3*n),0.27,string);

hold off;

subplot(2,2,2);

plot(m/pi,db);

axis([0,1,-100,0]);

xlabel('w/pi');

ylabel('db');

title('衰減特性(db)');

grid;

subplot(2,2,3);

plot(m,pha);

hold on;

n=0:7;

x=zeros(8);

plot(n,x,'-');

title('相頻特性');

xlabel('頻率w(rad)');

ylabel('相位(rad)');

axis([0,3.15,-4,4]);

subplot(2,2,4);

plot(m,mag);

title('頻率特性');

xlabel('頻率w(rad)');

ylabel('幅值');

axis([0,3.15,0,1.5]);

text(0.9,1.2,string);

b=menu('do you want to continue ?','yes','no');

if b==2

b=0;

endendtemp=menu('close all figure ?','yes','no');

if temp==1

close all

end%實驗中的子函式:產生理想低通濾波器單位脈衝響應hd(n)

function hd=ideal(w,n);

alpha=(n-1)/2;

n=[0:(n-1)];

m=n-alpha+eps;

hd=sin(w*m)./(pi*m);

實驗六用窗函式設計FIR濾波器附思考題程式

實驗六用窗函式設計fir濾波器 1.實驗目的 1 熟悉fir濾波器設計的方法和原理 2 掌握用窗函式法設計fir濾波器的方法和原理,熟悉濾波器的特性 3 了解各種窗函式濾波器特性的影響 2.實驗原理 fir濾波器的設計方法主要有三種 窗函式法 頻率取樣法 切比雪夫等波紋逼近法。fir濾波器的設計是要...

用對比法 控制變數法設計的初中物理實驗

作者 李偉報 現代交際 2012年第04期 摘要 在初中物理中,許多實驗都運用了控制變數法,但同時也是對照實驗。通過設定實驗對照對比,既可排除無關變數的影響,又可增加實驗結果的可信度和說服力。關鍵詞 實驗設計對比法控制變數法 中圖分類號 g633.7 文獻標識碼 a 文章編號 1009 5349 2...

用待定係數法求二次函式解析式教學設計及反思

江西省撫州市臨川區湖南鄉初級中學劉建平 教學目標 1 通過對用待定係數法求二次函式解析式的 掌握求解析式的方法。2 能靈活的根據條件恰當地選取選擇解析式,體會二次函式解析式之間的轉化。3 從學習過程中體會學習數學思想,積累解決問題的數學經驗。教學重點和難點 重點 靈活的掌握確定二次函式表示式的過程,...