filter2 が原因で丸めエラーが発生しています。最小限のコード例を次に示します。
format long
x=[ 0 0 0 0 0
64 65 72 74 72
104 111 109 106 112];
h=[ 0 0 0 0 0
0 0.500000000000000 0 0.500000000000000 0
0 0 0 0 0]
y=filter2(h,x, 'valid')
y_= x(2,2)/2 + x(2,4)/2
y__= sum(sum(x .* h))
round(y)
round(y_)
round(y__)
結果は
y = 69.499999999999986
y_ = 69.500000000000000
y_ = 69.500000000000000
ans = 69
ans = 70
ans = 70
これは、fft ドメイン (または同様のもの) でフィルタリングを行った結果であると推測しています。残念ながら、FPGA インプリメンテーションに対して生成しているテスト ベクターを検証するときに問題が発生します。
このエラーを修正/回避する方法はありますか?
PS私はmatlab 2007bを使用しています。
編集: 2007a から 2007b へ Edit2: y__ の例を追加