0

我正在努力在 matlab 中声明一些更复杂的矩阵,也许你可以帮助我,我有一个 $T$ 值数组/我们称之为 $y = [y_0, \hdots, y_T]$ (它是一个数字信号代表一个声音)。

我正在使用公式:

\begin{equation}
    y_t= a_0 + \sum_{i=1}^p  (a_i y_{t-i} + \epsilon_t), t \geq p,
\end{equation}

为了创建基于仅使用先前的 $p$ 值 $y_t$ 的合成信号,其中 $p$ 明显小于 y。我要做的是找到那些 $a_0, \vdots, a_p$ 参数以便使用 LSE 方法。

现在我需要你们帮助我:如何创建一个如下所示的矩阵:

\begin{equation}
    M =
    \begin{bmatrix}
        1 & 0 & 0 & 0 & 0 & \hdots & 0 \\
        1 & y_0 & 0 & 0 & 0 & \hdots & 0 \\
        1 & y_1 & y_0 & 0 & 0 & \hdots & 0 \\
        1 & y_2 & y_1 & y_0 & 0 & \hdots & 0 \\ 
        \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\
        1 & y_{T-1} & y_{T-2} & \hdots & \hdots & \hdots & y_{T-p} \\
    \end{bmatrix}
    \in R^{T+1xp+1}
\end{equation}

谢谢你的帮助

编辑:如何在这里格式化 LaTeX?

4

2 回答 2

2

您似乎需要一个代表一种卷积的矩阵。在 Matlab 中,toeplitz 函数在这里是相关的。

请参阅以下示例

>> y=[1 2 3 4 5 6 7];
>> toeplitz(y,[y(1) zeros(1,length(y)-1)])

ans =

 1     0     0     0     0     0     0
 2     1     0     0     0     0     0
 3     2     1     0     0     0     0
 4     3     2     1     0     0     0
 5     4     3     2     1     0     0
 6     5     4     3     2     1     0
 7     6     5     4     3     2     1

所以你的代码应该如下所示

 M = [ones(length(y),1)  toeplitz(y,[y(1) zeros(1,length(y)-1)]) ];
 M = M(:,1:p+1);  
于 2012-10-17T13:46:30.703 回答
0

由于问题的格式,很难看到发生了什么,但是这个怎么样:

M = zeros(length(y) + 1);

M(1) = 1;

for row = 2:length(y)+1
    M(1:row) = [1 y(row-1:-1:1)];
end
于 2012-10-17T10:47:16.310 回答