1.打開filterDesigner
首先是怎么打開filterDesigner,我這個版本的matlab是直接在命令列輸入filterDesigner就可以了,不同版本可能方法會不一樣,這個我也沒統計,就不做整理了,

2.設計濾波器
方法其實很簡單,【型別】自行選擇低通、高通、帶通、帶阻等,【濾波器階數】一般選最小階,【頻率設定】這里,這個頻率我目前還不清楚具體是做什么,但網上的說法就是,還是要按照香農定理來,就是Fs>2f,這個f是信號的最大頻率,【幅度設定】這一欄,數字越大表示衰減越多,
因為我也是小白,matlab+信號處理雙重小白,所有只能把操作流程展示一遍,具體的東西我也說不上來,請大家多多包涵,
設定好濾波器的引數以后,點擊設計濾波器,就出現了濾波器的樣子,然后點擊【檔案】-【匯出】,出現如下界面:

【匯出到-workspace】,就是匯出到作業區,【匯出為-系數】這不用改,【變數名稱】這個就是給這個濾波器起個名字,最后點擊匯出就ok了,
3.濾波
為了比較清晰地展示,我選擇用濾波器來濾波噪聲信號,代碼如下:
fs = 96e3; %
x = randn(1,96001); % 噪聲信號
N = 4096; %fft的N
n = 0:N-1;
y = fft(x,N); %fft
m =abs(y);
f = n*fs/N;
subplot(3,1,1),plot(f(1:N/2)/1000,m(1:N/2)); %輸出濾波前的頻譜
xlabel('頻率/kHz'),ylabel('幅值');
title('濾波前頻譜');
lbq = DaiZ; % 這里把設定好的濾波器賦給引數lbq(lbq就是濾波器);
x1 = filter(lbq,1,x); % 進行濾波,filter表示進行濾波,第一個lbq表示的是保存的濾波器的形式,第二個1是默認,第三個x是要濾波的信號
y1 = fft(x1,N);
m1 =abs(y1);
subplot(3,1,2),plot(f(1:N/2)/1000,m1(1:N/2)); %輸出濾波后的頻譜
xlabel('頻率/kHz'),ylabel('幅值');
title('濾波后頻譜');
% 也來看看我們生成的濾波器的頻譜
s =fft(lbq,N);
ms = abs(s);
subplot(3,1,3),plot(f(1:N/2)/1000,ms(1:N/2));
xlabel('頻率/kHz'),ylabel('幅值');
title('濾波器頻譜');
我的代碼應該寫的還是很有問題的,不過能運行,這個DaiZ就是我們剛付訓出的濾波器的引數了(看名字也能知道,這是個帶阻濾波器,誒,一點小小的彩蛋),
4.各個濾波器的實作效果
我發現這個設計的濾波器和最終實作的濾波器還是有一點差別的,我放幾張圖,打擊看一些設計時濾波器的值和實作后濾波器的值的差別,
- 低通濾波器


2. 高通濾波器


3. 帶通濾波器


4. 帶阻濾波器


可以看到,每種濾波器,設計和實作時都存在差別,至于為什么會存在這種差別,我也不太清楚,如果有哪位老師知道,也希望能指點12,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/163130.html
標籤:其他
上一篇:d3d9播放yuv
