我正在努力在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?
答案 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