>我正在尝试使用 MATLAB 的 filter() 函数生成一个 AR(2) 进程,如下所示:
A=[1 -2.7607 3.8106 -2.6535 0.9238];
% AR(4) coefficients
y=filter(1,A,0.2*randn(1024,1));
% Filter a white noise input to create AR(4) process
[ar_coeffs,nv] =arburg(y,4);
%compare the results in ar_coeffs to the vector A.
我有一个时间序列数据集,并希望大致匹配模拟数据集中数据的"总"方差。当我在第二行代码中使用 nv 代替 0.2 时,我在模拟中得到的方差太小了。
谁能帮我纠正这种情况以生成一个看起来相似的模拟 AR(N) 数据集?
谢谢
马克
如果你看一下这个例子中的nv
它是 0.0392,这是方差。要创建方差为 a^2 的白噪声,您需要将该序列乘以 a。如果 a^2 = 0.392,则 a 为 0.198(非常接近 0.2)。所以 Colin T 是对的,你需要将你的 randn(1024,1) 乘以 sqrt(nv)
而不是 nv
。