2012-06-20 88 views
2

您好我有我试图将行转换为列,然后堆叠中的所有列生成,将有三个维度的矢量的3维矩阵。转换3维矩阵MATLAB以3维列向量

因此,行1变成第1列,第2行成为塔2等。然后,第2列下柱1和2。我也需要保持的尺寸相同

下列1,列3转到PV_power_output(:,:,K)下面是一个365×24×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

您是否尝试在重塑之前进行转置? – ypnos

回答

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) 
+0

我已经设法使用下面的代码将每个元素放在正确的位置。我怎样才能修改代码,以便能够 “获得” K = 2和K出 – user643469

+0

PV_power_output = 3(:,:,K)=实(((Vmpp的_(:,:,K)* Impp_(:, :,K))* inverter_efficiency)/ 1000); PV_OUT(:,:,K)=(真实((Vmpp的_(:,:,K)* IMPP _(:,:,K))* inverter_efficiency)/ 1000)'; out = PV_power_output(:); – user643469