将3维matlab矩阵转换为3维列向量

时间:2012-06-20 16:52:41

标签: matlab vector matrix resize reshape

嗨我有一个3维矩阵,我试图将行转换为列,然后堆叠所有列以生成具有三个维度的向量。

因此,第1行变为第1列,第2行变为第2列等。然后,第2列位于第1列第3列第3列和第2列之下。我还需要保持尺寸相同

下面的PV_power_output(:,:,K)是一个365 x 24 x 27矩阵,它应该按照上面提到的定位顺序成为8760x1向量

我正在努力编写这个

到目前为止我已经

PV_power_output(:,:,K) = real((Vmpp_(:,:,K).*Impp_(:,:,K))*inverter_efficiency)/1000; 

 permdims = 1 : ndims(PV_power_output); 
out = reshape(permute(PV_power_output, permdims),8760,1,[]);

但是,在检查不同位置的元素时,上述情况不正确,所以任何帮助都会很棒!

1 个答案:

答案 0 :(得分:1)

也许你的置换是错误的,因为它一直没有做任何事情:

permute(PV_power_output, 1:3) == PV_power_output

也许你需要:

permute(PV_power_output, [2 1 3])

我一般情况下经常发现重塑难以理解(特别是三周后再回到代码中)所以如果性能不是很关键,那么你可以考虑在这里使用循环代替你的3d矩阵。

您可能会想到一个单元格数组而不是3d矩阵,然后您的重塑形式会更直接:

PV_power_output{K} = real((Vmpp_(:,:,K).*Impp_(:,:,K))*inverter_efficiency)/1000;

vector = reshape(PV_power_output{K},8760,1);

<强>更新

也许尝试重塑为2D:

out = reshape(permute(PV_power_output, [2 1 3]), 8760,27);

然后您可以访问Kth列向量:

vector_K = out(:,K)