2

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

因此,第 1 行变为第 1 列,第 2 行变为第 2 列,依此类推。然后,第 2 列在第 1 列下,第 3 列在第 1 列和第 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,[]);

但是,在检查不同位置的元素时,上述内容是不正确的,因此任何帮助都会很棒!

4

1 回答 1

1

也许您的置换是错误的,因为就目前而言它没有做任何事情:

permute(PV_power_output, 1:3) == PV_power_output

也许你需要:

permute(PV_power_output, [2 1 3])

一般来说,我经常发现 reshape 很难遵循(尤其是当您在三周后返回代码时),因此如果性能不重要,那么您可以考虑在此处使用循环来代替您的 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);

然后您可以访问第 K 列向量:

vector_K = out(:,K)
于 2012-06-20T17:19:23.710 回答