Info

This question is closed. Reopen it to edit or answer.

Problem Writing an Autoregressive Process Function

1 view (last 30 days)
Roger Kimsky
Roger Kimsky on 10 Dec 2017
Closed: MATLAB Answer Bot on 20 Aug 2021
I need to create a function that can realize an autoregressive process given three parameters: length(N), standard deviation(sigma), and a vector of coefficients (a).
I know that from the definition of an autoregressive process: x[n]+ a[1]x[n −1]+ a[2]x[n −2]+...+ a[M]x[n − M] = v[n]
Or, in other words: x[n] = -a[1]x[n −1] - a[2]x[n −2] - ... + -a[M]x[n − M] + v[n]
I can use the standard deviation input to create white Gaussian noise with a given variance by multiplying the randn function by it, which will be the v[n] term. However, I'm having trouble figuring out how to create the function since x[n] depends on previous inputs of itself and it can't be an input to the function. As such, I don't know what to do about the x[n-1], x[n-2], etc. terms in the second equation. Does anyone know how to go about doing this? With this issue solved, I can easily figure the rest out on my own. Thanks a lot!

Answers (1)

Michelangelo Ricciulli
Michelangelo Ricciulli on 10 Dec 2017
Hello Roger,
First I suppose the length N, is the output vector length. Right? Let's say your initial index is 1. Thus, samples before x[1] (i.e., x[0] x[-1] ... x[1-M]) can be simply considered 0 (or, if you prefer, they could be passed as an argument of the function). Then, the first sample of the vector x can be computed as,
x[1]=v[1];
At the next step, you can use x[1] since you just computed its value. So,
x[2]=a[1]*x[1]+v[2];
Then,
x[3]=a[1]*x[2]+a[2]*x[1]+v[3];
And so on and so forth. Of course, you'll need to implement these steps programmatically.

Community Treasure Hunt

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

Start Hunting!

Translated by