# Problem Writing an Autoregressive Process Function

2 views (last 30 days)
Roger Kimsky on 10 Dec 2017
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]+ ax[n −1]+ ax[n −2]+...+ a[M]x[n − M] = v[n]
Or, in other words: x[n] = -ax[n −1] - ax[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!

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 (i.e., x 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=v;
At the next step, you can use x since you just computed its value. So,
x=a*x+v;
Then,
x=a*x+a*x+v;
And so on and so forth. Of course, you'll need to implement these steps programmatically.