數字濾波器是由數字乘法器、加法器和延時單元組成的一種演算法或裝置。數字濾波器的功能是對輸入離散訊號的數字**進行運算處理,以達到改變訊號頻譜的目的。
其對應的差分方程為:(其中x(n)為系統輸入,y(n)為系統的輸出)
將h(z)公式中的z換為ejw,可以求得w在(0~π)區間的頻域響應。
使用matlab中的freqz函式可以直接繪製出數字濾波器的頻域響應曲線。
數字濾波器包括有限長衝激響應(fir)濾波器、無限長衝激響應(iir)濾波器。fir濾波器的a(1)=1,a(2)…a(n+1)都為0,fir濾波器只對輸入訊號進行處理,因此具有穩定性;iir濾波器由於引入了輸出訊號的反饋,因此存在不穩定性。
fir濾波器在工程中更為常用,matlab程式演示fir濾波器的設計。
clc
clear
close all
n=512; % 訊號長度
fs=1e6; % 取樣頻率
dt=1/fs; % 取樣間隔
t=(0:n-1)*dt; % 時間序列
f1=15e3; % 訊號頻率1 /hz
f2=50e3; % 訊號頻率2 /hz
xn=2*cos(2*pi*f1*t)+cos(2*pi*f2*t+0.5*pi+1)
;% 15khz+50khz
%% fir濾波器設計
filterlen = 128; % 濾波器長度
filterstep = filterlen-1; % 濾波器階數
freqstart=10e3;% 低截止頻率
freqend =20e3;% 高截止頻率
w1 = freqstart/fs*2*pi;% 歸一化
w2 = freqend /fs*2*pi;% 歸一化
window = ones(filterlen,1)
;% 矩形窗
% window = hanning(filterlen)
;% 漢寧窗
% window = blackman(filterlen)
;% 布萊克曼窗
% hn = fir1(filterstep,w2/pi,'low',window)
; % 生成低通濾波器
% hn = fir1(filterstep,w2/pi,'high',window)
; % 生成高通濾波器
hn = fir1(filterstep,[w1/pi,w2/pi],'bandpass',window)
;% 生成帶通濾波器
% hn = fir1(filterstep,[w1/pi,w2/pi],'stop',window)
; % 生成帶阻濾波器
figure;
freqz(hn,1)
;% 繪製歸一化的濾波器的特性曲線
figure;
subplot(3,2,3)
;plot(hn,'o-');
xlabel(
'點數/n');
title(
'濾波器時域圖');
subplot(3,2,1)
;plot(t,xn)
;xlabel();
title(
'原始訊號');
%% fft分析原始訊號
nn=512;% nn點dft
xn=fft(xn,nn)/nn;% 計算signal的nn點快速傅利葉變換
f0=fs/nn; % 頻率解析度
f=(0:nn-1)*f0; % 頻率序列
fk=(0:nn-1)
; % 譜線序列
a=abs(xn)
; % 幅值序列
phase=atan(-real(xn)./imag(xn))/pi*180; % 相位序列
subplot(3,2,2)
;plot(f(1:nn/2),a(1:nn/2))
;xlabel(
'頻率/hz'
);ylabel(
'幅度');
title(
'原始訊號頻譜');
%% filtering
% 方法1:
% yn = conv(xn,hn)
;% 對原始序列和濾波器序列求卷積得到濾波後的結果
% yn = yn(filterlen/2:filterlen/2+n-1)
;% 濾波結果是居中的資料
% 方法2:
% 矩陣法計算卷積
a = n;
b = filterlen+n-1;
hn = zeros(a,b)
;% 初始化乙個a行b列的矩陣
for i=1:a
for j=1:filterlen
hn(i,j+i-1)
= hn(j)
; end
endyn=xn*hn;
yn = yn(filterlen/2:filterlen/2+n-1);
subplot(3,2,5)
;plot(t,yn)
;xlabel();
title(
'濾波器輸出訊號');
%% fft分析輸出訊號
nn=512;% nn點dft
xn=fft(yn,nn)/nn;% 計算signal的nn點快速傅利葉變換
f0=fs/nn; % 頻率解析度
f=(0:nn-1)*f0; % 頻率序列
fk=(0:nn-1)
; % 譜線序列
a=abs(xn)
; % 幅值序列
phase=atan(-real(xn)./imag(xn))/pi*180; % 相位序列
subplot(3,2,6)
;plot(f(1:nn/2),a(1:nn/2))
;xlabel(
'頻率/hz'
);ylabel(
'幅度');
title(
'輸出訊號頻譜');
%% 濾波器引數存為txt檔案
fid=fopen(
'hn.txt','w'
); %需要改檔名稱的地方
count=fprintf(fid,'%d\n',round(hn*65536))
; %需要匯出的資料名稱
數字訊號處理 數字濾波器
輸入訊號中有用的頻率成分和洗完濾除的成分個占有不同的頻帶,通過濾波器選頻實現濾波目的 如高通濾波器,帶通濾波器,低通濾波器等等 訊號和干擾的頻譜會相互重疊,需要根據隨機訊號的統計特性,在某種準則下最大限度地抑制干擾,恢復訊號,達到濾波目的.寫出系統幅頻特性函式 h e h z big 令 omega...
數字訊號處理 7 5 FIR數字濾波器
當系統嚴格要求線性相位時,採用fir濾波器,因為達到同樣的效果,fir的階數比iir高很多。線性相位條件 單位衝激響應h n 序列以n n 1 2為偶對稱中心,群延遲延時t n 1 2,即以t為抽樣週期。奇對稱。與上面不同的是,產生了固定相移 pi 2 偶對稱時,具有準確的線性相位 n 1 2個抽樣...
數字訊號處理實驗(四) 數字濾波器結構
目錄 一 實驗目的 二 實驗內容及要求 1.數字濾波器的級聯結構 2.數字濾波器的併聯結構 三 實驗結果及問題回答 1.數字濾波器的級聯結構 2.數字濾波器的併聯結構 使用相互連線的基本結構塊的結構表示,是線性時不變數字濾波器的硬體或軟體實現中的第一步。本實驗掌握用mat lab對fir和iir傳輸...