嗨我有一个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,[]);
但是,在检查不同位置的元素时,上述情况不正确,所以任何帮助都会很棒!
答案 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)