根据另一列的唯一元素在列中添加元素

时间:2018-09-08 16:51:48

标签: matlab matrix indexing rows columnsorting

我有一个名为single_matrix_with_time_id的矩阵,第一列对应于frame_number,第二列对应于time,第三列包含identity,第四列包含{{ 1}},第五列和第六列的内容为error,第七列的内容为X and Y coordinates

我要做的是从第二列(Camera_id)中获取唯一元素,并从time中获取与time的唯一元素相对应的元素,并将其添加到名为first and seventh column的新矩阵的第一,第二和第三列。我尝试在下面显示的代码中执行此操作,但是并没有给我预期的结果。附加了final_plot_matrix的代码和图像。任何帮助将不胜感激。

single_matrix_with_time_id

single_matrix_witj_time_id

1 个答案:

答案 0 :(得分:1)

使用“ unique”似乎在正确的轨道上,但是应该比这更简单。调用时间数据(第二列)上的unique以获取唯一的行号。唯一返回唯一值作为第一个输出,索引返回第二个。我们只关心索引,因此忽略第一个输出。

[~, ia] = unique(single_matrix_with_time_id(:,2);

现在,您知道要从原始数据获得的行号和列号。行号在“ ia”中,并且您需要第1、2和7列。因此,创建一个新矩阵:

final_plot_matrix = single_matrix_with_time_id(ia,[1 2 7]);

就是这样!如果要切换列的顺序(例如,将时间排在第一列而不是第二列),只需在上一行中切换列的顺序即可。例如:

final_plot_matrix = single_matrix_with_time_id(ia,[2 1 7]);