matlab矩阵声明

时间:2012-10-17 10:07:07

标签: matlab matrix

我正在努力在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}

为了创建一个合成信号,基于仅使用$ y $ $ $的前$ p $值,其中$ p $明显小于y。我要做的是找到那些$ a_0,\ vdots,a_p $ parametres以便使用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?

2 个答案:

答案 0 :(得分: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);  

答案 1 :(得分: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