filter function not linear in numerator coeffcients

Why is the built-in "filter" function not linear in the numerator coefficients?
b = [1.000000000000000
0.156960680127524
-0.008820403825717];
a = [1.000000000000000
-1.829126729842689
0.834081514068486];
x = [1; zeros(250,1)];
scale = 0.941;
result1 = filter(scale*b,a,x);
result2 = scale*filter(b,a,x);
result1-result2
My intuition is that it should make no difference whether one scales the impulse b (as in result1) or the response (as in result2). Numerically there is, however, if only tiny.
Background: I am computing the MA coefficients for an ARMA process and want to test different impulses.
Any hints greatly appreciated!

 채택된 답변

Jan
Jan 2018년 5월 29일
편집: Jan 2018년 5월 29일
This difference between the solutions is tiny:
max(abs(result1 - result2))
>> 1.1546e-14
This is an expected effect for computations with numbers stored in floating point format with limited precision. See: Why is 0.3-0.2 not equal 0.1.
Search in the net for "IEE754", which defines the standard method of the type double. You will find many explanations of the expected effects.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Conditional Mean Models에 대해 자세히 알아보기

제품

릴리스

R2015b

질문:

2018년 5월 28일

편집:

Jan
2018년 5월 29일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by