我遇到了由 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__ 示例