Matlab数组2x2矩阵和逐元素矩阵/向量乘法

时间:2012-04-02 13:57:10

标签: arrays matlab matrix

我希望有一个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而不是没有特殊包的编程语言,那么我最终必须根据循环等来编写矩阵乘法。然后,这将转向所有矩阵运算。如果可以的话,我更愿意使用能够使这一切变得非常简单的命令。

2 个答案:

答案 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的输出。