使用 MATLAB filter() 生成适当缩放的 AR 流程



>我正在尝试使用 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

最新更新