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

将三维matlab矩阵转换为三维列向量,matlab,vector,matrix,resize,reshape,Matlab,Vector,Matrix,Resize,Reshape,嗨,我有一个三维矩阵,我正在尝试将行转换为列,然后堆叠所有列以生成一个具有三维的向量 因此,第1行变为第1列,第2行变为第2列,以此类推,然后第2列在第1列下,第3列在第1列和第2列下。我还需要保持尺寸不变 下面的PV_功率_输出(:,:,K)是一个365 x 24 x 27矩阵,按照上面提到的定位顺序,它应该成为一个8760x1向量 我正在努力编写这个代码 到目前为止我有 PV_power_output(:,:,K) = real((Vmpp_(:,:,K).*Impp_(:,:,K))*in

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

因此,第1行变为第1列,第2行变为第2列,以此类推,然后第2列在第1列下,第3列在第1列和第2列下。我还需要保持尺寸不变

下面的PV_功率_输出(:,:,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,[]);

但是,在检查不同位置的元素时,上述内容是不正确的,因此任何帮助都将非常有用

也许你的permute是错的,因为它没有做任何事情:

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);

更新:

或许可以尝试将形状重塑为二维:

out = reshape(permute(PV_power_output, [2 1 3]), 8760,27);
然后您可以访问第k列向量,如下所示:

vector_K = out(:,K)

在重塑之前你试过转置吗?我已经用下面的代码把每个元素都放在了正确的位置。如何修改代码以“访问”输出功率输出的K=2和K=3(:,:,K)=实值(((Vmpp_u(:,:,K)。*输入功率(,:,K))*逆变器效率)/1000);PV_out(:,:,K)=(实值((Vmpp_(:,:,K)。*Impp_(:,:,K))*逆变器效率)/1000);输出=光伏功率输出(:);