将大矩阵转换为带有标签的单元阵列

时间:2014-04-29 10:06:46

标签: matlab matrix cell-array

我有一个包含数字数据的矩阵。尺寸为31x48。我想为这个矩阵的每一行添加一个标签。我能想到的最好的方法是将我的矩阵转换为一个单元格数组,每行包含我的48个数据。

我不确定如何对此进行编程,因此它会遍历每一行,添加一个标签,例如'第1天和第3天。然后包含我的数据。 我希望它看起来如下: 第1天[30 30 30 30 30 .......] 第2天[30 30 30 30 30 ...]等。

我需要将标签分配给该行,以便当我将其分成两组时,我知道哪些数据对应于哪一天。

1 个答案:

答案 0 :(得分:0)

我们将从您的原始< 31x48>开始矩阵。我们称之为“垫子”

mat=rand([31,48])

首先,我们将矩阵转换为单元格数组

mat_cell=num2cell(mat,2)

这将创建一个< 31x1 cell>。 mat_cell {day,1}将返回该日期的48项。现在我们将标签添加到mat_cell的第二列(第一列包含您的< 1x48>数据)。假设我们有一个大小为< 1x31>的标签名称单元格数组。这样

labels={'Day 1' ; 'Day 2' ; 'Day 3' ; ... 'Day 31'}

然后

mat_cell(:,2)=labels

应该为mat_cell的每一行添加标签。然后

mat_cell{day,1} returns the <1x48> array for the 'day'.
mat_cell{day,2} returns label for the 'day'.

请注意:虽然非常明显,但标签单元格数组的文本排列应与原始mat数组中的列对应。