我希望有一个2x2复数矩阵的时间序列,Ot,然后我希望有1行命令乘以复数向量Vt的数组,由数组Ot表示数组中的位置被理解为时间瞬间。我想要Vtprime(i)= Ot(i)* Vt(i)。任何人都可以建议一种简单的方法来实现它吗?
假设我有一个矩阵M(t),其中元素m(j,k)是t的函数,t是某个系列的元素(t = 0:0.1:3)。我可以很容易地创建一个矩阵数组吗?
我理解如何在Matlab中使用数组,甚至是二维数组,其中每个“i”索引包含两个复数(j = 0,1)。这将是一种拥有“复杂二维向量的时间序列”的方法。具有复杂矩阵的时间序列的方式将是三维阵列。 (i,j,k)表示“第i”矩阵,j = 0,1和k = 0,1给出该矩阵的元素。
如果我认真对待matlab而不是没有特殊包的编程语言,那么我最终必须根据循环等来编写矩阵乘法。然后,这将转向所有矩阵运算。如果可以的话,我更愿意使用能够使这一切变得非常简单的命令。
答案 0 :(得分:1)
这可以通过Matlab数组迭代来解决,比如
vtprime(:) = Ot(:)*Vt(:)
如果我正确理解你的问题。
答案 1 :(得分:0)
由于Ot和Vt都随着时间索引而变化,我认为最好的方法是循环。 (如果Ot或Vt中只有一个随时间变化,你可以在一个大的矩阵乘法中进行设置。)
以下是我如何设置它:Ot是一个复杂的2x2xI 3D矩阵,所以
Ot(:,:,i)
在时刻i引用矩阵。
Vt是一个复杂的2xI矩阵,所以
Vt(:,i)
在时刻i引用向量。
进行乘法运算:
for i = 1:I
Vtprime(:,i) = Ot(:,:,i) * Vt(:,i);
end
生成的Vtprime是一个2xI矩阵设置,因此Vtprime(:,i)
是时刻i的输出。