数字滤波器原理及设计
一個模擬信號,V(t),其中t的數值被均勻的提出樣本V(delta t), V(2delta t),…V(n delta t),使其產生數字的序列。我們暫且將這個序列命名為 {V}=V1,V1…Vn.
數字濾波器可以提取一個輸入信號序列{Vin},然後產生一個輸出信號序列{Vout}.
此類濾波器可以被一個方程是定義為
V(i)out=a0V(i)in+a1V(i-1)in+a2V(i-2)in…a(k-1)V(i-(k-1))in.
a0等至ak都是這個濾波器對於每個不同輸入信號的特別回應。
例如:
FIR
a0=2.1
a1=3.7
a2=5.4
Vin ={1 2 3 4 5 6 7 } Vout ={ 2.1 *1
2.1*2+3.7*1
2.1*3+3.7*2+5.4*1
2.1*4+3.7*3+5.4*2
2.1*5+3.7*4+5.4*3
2.1*6+3.7*5+5.4*4
2.1*7+3.7*6+5.4*5
3.7*7+5.4*6
5.4*7
}
作業:
A部分。
定義一個Class,float_seq,以float的小數精確方式去計算這個{V}序列的值。
提供(member)function使其可以在float-seq下去閲讀和書寫第i的元素,然後檢查合格的i的值,在當出現一個不合法的值的時候也具有警告caller的功能。
提供一個(member)function,只可以允許閲讀在float-seq内的進入元素的數目。
提供一個(member)function,使得所有的元素序列歸零。
定義一個class,使用float的形式用FIR去計算FIR濾波器:
1. 提供member fuctions可以閲讀和書寫第i個的濾波器係數,然後去檢查這個i是否合格,在當出現一個不合法的值的時候也具有警告caller的功能。
2. 提供一個member fuction,使其可以返回一個(指針或者instance of anything),float_seq包含濾波器係數的值。
Float_seq和FIR都需要有destructors,copy constructors和assignment operators.573