细胞数组转换为四维数组

22日视图(30天)
Wenyi肖
Wenyi肖 2019年4月22日
编辑: Stephen23 约3小时前
微信Screenshot_20190422191521.png
我有一个35 * 10单元阵列,其中包含多个相同大小的矩阵(256 * 256)。我想把它变成四维数组(256 * 256 * 10 * 35)。
1评论
Stephen23
Stephen23 2019年4月23日
重要的未来的读者请注意:公认的答案涉及数据!

登录置评。

接受的答案

马特·J
马特·J 2019年4月22日
编辑:马特·J 2019年4月23日
在哪里 C 是你的单元阵列:
M =重塑(猫(3 C {:}), [256256、10、35])
编辑:
或M =重塑(猫(3 C{:}),[256256, 35岁,10])?
4评论
马特·J
马特·J 2019年4月23日
编辑:马特·J 2019年4月23日
好吧,我认为你应该允许的可能性,然而,OP输入错误,真的想说,最终的尺寸应该是256256,35岁,10,因为这需要最少的数据重组。在这种情况下,我的解决方案是有效的和下面的小变化。
M =重塑(猫(3 C{:}),[256256, 35岁,10])
也有可能OP意味着第三选择,
C = C。';
M =重塑(猫(3 C {:}), [256256、10、35])

登录置评。

答案(1)

Stephen23
Stephen23 2019年4月22日
在哪里 C 是你的单元阵列:
M = cell2mat(排列(C [4、3、2、1]))
4评论
Stephen23
Stephen23 17分钟前
编辑:Stephen23 8分钟前
因为你的单元阵列是“一维”你不需要变更,您可以简单地使用一个逗号分隔的列表。让我们首先创建一些假的数据:
格式紧凑的
xTrain ={兰德(2,2,4),兰德(2,2,4),兰德(2,2,4)}
xTrain =1×3单元阵列{2×2×4双}{2×2×4双}{2×2×4双}
=猫(4,xTrain {:})%这是你所需要的
一个=
(::1,- 1)= 0.2834 0.6106 0.8151 0.8142 (:,:,2,1)= 0.2350 0.8999 0.0795 0.2219 (:,:,3,1)= 0.9345 0.9923 0.2742 0.2406 (:,,4,1)= 0.2141 0.4339 0.0173 0.2571 (:,:,1,2)= 0.5167 0.6388 0.9098 0.3225 (:,:,2,2)= 0.0708 0.4039 0.6876 0.5883 (:,:,3、2)= 0.6054 0.4192 0.0597 0.5061 (:,,4,2)= 0.1943 0.4933 0.4184 0.2042 (:,:,1,3)= 0.2557 0.5996 0.3474 0.3618 (:,:,2,3)= 0.6575 0.2345 0.3212 0.0317 (:,:,3,3)= 0.7977 0.5544 0.7107 0.9662 (:,,4,3)= 0.4135 0.4872 0.2009 0.4120
或者你可以使用重塑和CELL2MAT(复杂和慢):
= cell2mat(重塑(xTrain, 1, 1, 1, []))
一个=
(::1,- 1)= 0.2834 0.6106 0.8151 0.8142 (:,:,2,1)= 0.2350 0.8999 0.0795 0.2219 (:,:,3,1)= 0.9345 0.9923 0.2742 0.2406 (:,,4,1)= 0.2141 0.4339 0.0173 0.2571 (:,:,1,2)= 0.5167 0.6388 0.9098 0.3225 (:,:,2,2)= 0.0708 0.4039 0.6876 0.5883 (:,:,3、2)= 0.6054 0.4192 0.0597 0.5061 (:,,4,2)= 0.1943 0.4933 0.4184 0.2042 (:,:,1,3)= 0.2557 0.5996 0.3474 0.3618 (:,:,2,3)= 0.6575 0.2345 0.3212 0.0317 (:,:,3,3)= 0.7977 0.5544 0.7107 0.9662 (:,,4,3)= 0.4135 0.4872 0.2009 0.4120
最初的回答需要交换,因为单元阵列是一个矩阵,然后OP想交换单元阵列的维度1、2点分别成为输出数组的维度4和3。你的案子很简单:你只是想交换单元阵列尺寸2维4。这可以通过使用上面的代码我给。
但如果你真的想使用排列在这里:
% vvvvv这些的顺序并不重要
% v移动单元阵列2暗4昏暗
= cell2mat(排列(xTrain (1、3、4、2)))
一个=
(::1,- 1)= 0.2834 0.6106 0.8151 0.8142 (:,:,2,1)= 0.2350 0.8999 0.0795 0.2219 (:,:,3,1)= 0.9345 0.9923 0.2742 0.2406 (:,,4,1)= 0.2141 0.4339 0.0173 0.2571 (:,:,1,2)= 0.5167 0.6388 0.9098 0.3225 (:,:,2,2)= 0.0708 0.4039 0.6876 0.5883 (:,:,3、2)= 0.6054 0.4192 0.0597 0.5061 (:,,4,2)= 0.1943 0.4933 0.4184 0.2042 (:,:,1,3)= 0.2557 0.5996 0.3474 0.3618 (:,:,2,3)= 0.6575 0.2345 0.3212 0.0317 (:,:,3,3)= 0.7977 0.5544 0.7107 0.9662 (:,,4,3)= 0.4135 0.4872 0.2009 0.4120

登录置评。

类别

找到更多的在矩阵和数组帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!