AnyMath 文档

阿姆科夫

具有所有极点的自回归模型的参数是修改的协方差方法。

库::`工程师`

语法

函数调用

争论

输入参数

# x — 输入数组

+ 向量资料 | 矩阵

Details

指定为向量或矩阵的输入数组。

数据类型

漂浮物32, 漂浮64</无翻译> 支持复数::是

# p — 模型的顺序

+ 正整数标量

Details

模型的阶数,给定为正整数标量。 意义 p 应该少于元素或行的数量 [参数:x].

数据类型

漂浮物32, 漂浮64</无翻译>

输出参数

# 一个 — 归一化自回归参数

+ 向量字符串 | 矩阵

Details

归一化自回归参数作为向量或矩阵返回。 如果 [参数:x] -矩阵,然后每行 a 对应于列 [参数:x]. 论点 a[参数:p]+1 列并包含autoregression参数 度的降序排列 .

# e 是输入信号的白噪声方差

+ 标量,标量 | 向量字符串

Details

输入信号的白噪声方差,作为标量或字符串向量返回。 如果 [参数:x] -矩阵,然后为每个元素 e 对应于列 [参数:x].

例子:

使用修改的协方差方法估计参数

Details

我们使用多项式系数的向量来生成自回归过程。 4-过滤顺序 1024 白噪声样本。 重置随机数发生器以获得可重复的结果。 我们使用协方差方法来估计系数。

import EngeeDSP.Functions: randn,filter,armcov

A = [1 -2.7607 3.8106 -2.6535 0.9238]
y = filter(1,A,0.2*randn(1024,1))
arcoeffs = armcov(y,4)[1]
1×5 Matrix{Float64}:
 1.0  -2.77405  3.84044  -2.68409  0.936008

生成 50 过程的实现,每次改变输入噪声的方差。 让我们将使用修改后的协方差计算的方差与实际值进行比较。

nrealiz = 50
order = 4
noisestdz = rand(1, nrealiz) .+ 0.5
randnoise = randn(1024, nrealiz)
noisevar = zeros(1, nrealiz)

for k in 1:nrealiz
    y = filter(ones(1), A, noisestdz[k] * randnoise[:, k])
        arcoeffs,noisevar[k] = armcov(y, order)

end

p=scatter(vec(noisestdz.^2), vec(noisevar),
        marker=:x,
        markerstrokecolor=:blue,
        xlabel="Input",
        ylabel="Estimated",
        title="Noise Variance",
        label="Single channel loop",
        legend=false)

armcov 1

让我们使用函数的多通道语法重复该过程。

Y = filter(1,A,noisestdz.*randnoise)

coeffs,variances = armcov(Y,4)

scatter!(p,noisestdz.^2, variances,
        marker=:circle,
        markercolor=:transparent,
        markerstrokecolor=:green,
        markersize=10)

armcov 2

此外

P阶的自回归模型

Details

在订单的自回归模型中 ( )电流输出是前几种的线性组合 输出加上白噪声输入信号。 以前的权重 输出使自回归预测的平均二次误差最小化。

通过对方差的白噪声进行滤波而获得的平稳的、宽泛的随机过程 使用系统功能 . 如果 -光谱功率密度 ,则

由于修改后的协方差方法使用具有所有极点的模型来表征输入数据,因此模型顺序的正确选择是 非常重要。