「FIR」の編集履歴(バックアップ)一覧はこちら
FIR - (2009/10/17 (土) 20:46:04) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
<p>#ifndef FIRclass_Direct<br /><br />
// FIR フィルタ用クラスの定義部<br />
template<int order> class FIR_Direct<br />
{<br />
private:<br />
const float *const hm; // フィルタの係数に対応するポインタ<br />
float xn[order+1]; // 入力信号用バッファ<br />
public:<br />
FIR_Direct(const float hk[]) : hm(hk) // コンストラクタ<br />
{ for (int k=0; k<=order; k++) xn[k] = 0.0; }<br />
inline float Execute(const float xin); // FIR フィルタ処理の宣言<br /><br />
};<br /><br />
// FIR フィルタ用クラスの実装部<br />
template<int order> inline float FIR_Direct<order>::Execute(const
float xin)<br />
{<br />
float acc = 0.0;<br />
xn[0] = xin;<br />
for (int k=0; k<=order; k++) acc = acc + hm[k]*xn[k]; // 積和の計算<br />
for (int k=order; k>0; k--) xn[k] = xn[k-1]; // 入力信号の移動<br />
return acc;<br />
}<br /><br />
#define FIRclass_Direct<br />
#endif</p>
<p>#ifndef FIRclass_Direct<br /><br />
// FIR フィルタ用クラスの定義部<br />
template<int order> class FIR_Direct<br />
{<br />
private:<br />
const float *const hm; // フィルタの係数に対応するポインタ<br />
float xn[order+1]; // 入力信号用バッファ<br />
public:<br />
FIR_Direct(const float hk[]) : hm(hk) // コンストラクタ<br />
{ for (int k=0; k<=order; k++) xn[k] = 0.0; }<br />
inline float Execute(const float xin); // FIR フィルタ処理の宣言<br /><br />
};<br /><br />
// FIR フィルタ用クラスの実装部<br />
template<int order> inline float FIR_Direct<order>::Execute(const
float xin)<br />
{<br />
float acc = 0.0;<br />
xn[0] = xin;<br />
for (int k=0; k<=order; k++) acc = acc + hm[k]*xn[k]; // 積和の計算<br />
for (int k=order; k>0; k--) xn[k] = xn[k-1]; // 入力信号の移動<br />
return acc;<br />
}<br /><br />
#define FIRclass_Direct<br />
#endif</p>