MATLAB:如何拆分和转置单元阵列?

时间:2016-04-29 21:10:00

标签: arrays matlab split cell transpose

我有下一个单元格组成(30 * 1大小),重要的是要注意这是一个由数字和字符串组成的单元格数组。

根据""我想要做的就是首先拆分它。所以每个不同的数字必须占据一个不同的列。像这样:

CELL SPLIT

在此之后,我想转置所有数字,所以我想要一个最终的矩阵大小(7 * 30)

CELL TRANSPOSE

任何人都可以帮我解决这个问题吗?

提前致谢!

2 个答案:

答案 0 :(得分:1)

查看您在问题中放入的两个图像(尽管对我来说它们看起来像是在 Excel 中),我想您有一个包含 30 个列表的单元格数组(双数组;条目类型为 number 的数组) /双倍的)。这里我举了一个较短的例子,用 2 而不是 30。

dataInput={[1,2,3,4,5,6,7];[0,-1,0.5,2,5,6,7]}

它是一个 2×1 cell array,它的每个条目都是一个 1x7 array of doubles。现在要回答您问题的第一部分,即将列表的条目分开以将每个数字作为一个单元格,而不是将 7 个数字的整个列表作为一个单元格,我使用 num2cell。对于您问题的第二部分,转置单元格,我只添加 ' (单引号)。并将所有这些单元格混合到单个单元格阵列中,我使用括号。因此,这是根据需要获得 7×2 cell array 的一种方法。

dataOutput=[num2cell(dataInput{1})',num2cell(dataInput{2})']

您还可以在末尾(外部)使用 ' 运算符,如下所示。

dataOutput2=[num2cell(dataInput{1});num2cell(dataInput{2})]'
% or
dataOutput3=vertcat(num2cell(dataInput{1}),num2cell(dataInput{2}))'

答案 1 :(得分:0)

这是我的解决方案版本,在Matlab的命令窗口中打印:

>> a={12,13,14,45;4,8,nan,nan;450,2,14,nan};  %% cell array
>> b=cell2mat(a); %% convert cell array to ordinary array of the underlying data type
>> c=transpose(b) %% transpose matrix b (or use the following syntax b.')

一些有用的链接

  1. transpose
  2. PL/pgSQL
  3. 我希望这会有所帮助。最好的问候。