MATLAB Answers

Problems using the filter function with a column vector

2 views (last 30 days)
Darryl
Darryl on 15 Nov 2013
Commented: Darryl on 15 Nov 2013
I am having problems using the filter function with a column vector. I have a simple column vector that starts off with numbers like so:
77
76
75
75
77
78
.....
When I apply the filter function my new vector starts with
19.2500
38.2500
57
75.7500
75.7500
76.2500
....
When both these vectors are plotted the first couple of filtered points are completely off as imagined when looking at the first few rows of data. After the preceding error the filtered version follows the unfiltered version as expected.
a = filter([0.25 0.25 0.25 0.25], 1, z);

  0 Comments

Sign in to comment.

Accepted Answer

Wayne King
Wayne King on 15 Nov 2013
Edited: Wayne King on 15 Nov 2013
Not sure why you say it is off. filter() convolves the data with the 4-point moving average filter in a causal manner.
So for the first element you get 77/4 because x(0-k) is only valid when k=0, as soon as k increments to 1, you have x(-1) which is 0. There is no element before the starting element, x(0) (not using MATLAB 1-based indexing here)
For the 2nd element you get (x(1-0)+x(1-1))/4 = (77+76)/4
finally the 4th element gives you 75.75
Using zero-based indexing, filter is outputting the following:
Let h(n) = 1/4 n = 0,1,2,3,4
y(n) = \sum_{k=0}^3 h(k) x(n-k)
start plugging in values for n of n = 0, 1,2, 3 and you'll see why you get the output you observe.

  1 Comment

Darryl
Darryl on 15 Nov 2013
Sorry yes I see now after sketching a moving average diagram and adding the first 3 elements.

Sign in to comment.

More Answers (0)

Sign in to answer this question.