用matlab設(shè)計(jì)濾波器時(shí),我們會(huì)使用到fdatool工具, 首先大概說一下這個(gè)工具的使用。 假設(shè)我們需要設(shè)計(jì)一個(gè)半帶抽取濾波器: 采樣率Fs為122.88MHz。 通帶Fpass: 10 MHz, 帶內(nèi)波動(dòng): Apass: 0.001
定點(diǎn)化,將系數(shù)歸一化,設(shè)置如下圖,確保輸入通帶的波形和輸出波形幅值基本不變。
上述操作等效為以下matlab代碼:
Apass = 0.001;
Fpass = 10;
Fsa = 122.88;
z = 10 ^ (Apass / 20.0);
ap = (z - 1) / (z + 1);
fs = Fpass * 2 / Fsa;
b = firhalfband('minorder',fs,ap);
b = round(b*2^15);
plot(b);
grid;
I = find(b < 0);
b(I) = 65536 + b(I);
c = [ dec2hex(b)];
fid1 = fopen('d:filter1.coe','w');
fprintf(fid1,';Create by gzy de tool
');
fprintf(fid1,'Radix = 16;
');
fprintf(fid1,'Coefficient_Width = 16;
');
fprintf(fid1,'CoefData =
');
for i = 1 : length(b)-1
fprintf(fid1,'%s,
',c(i,end-3:end));
end;
fprintf(fid1,'%s;
',c(end,end-3:end));
fclose(fid1);
半帶抽取就是利用上述系數(shù)進(jìn)行濾波之后,2個(gè)點(diǎn)抽取1個(gè)點(diǎn)即可
半帶插值就是先插0,然后利用上述系數(shù)進(jìn)行濾波后,幅度會(huì)衰減一半,需要補(bǔ)償
審核編輯:黃飛
-
matlab
+關(guān)注
關(guān)注
179文章
2946瀏覽量
229462 -
濾波器
+關(guān)注
關(guān)注
158文章
7596瀏覽量
176580 -
輸出波形
+關(guān)注
關(guān)注
0文章
20瀏覽量
8918
原文標(biāo)題:利用matlab代碼來生成FIR 半帶濾波器系數(shù)
文章出處:【微信號(hào):FPGA十年老鳥,微信公眾號(hào):FPGA十年老鳥】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論