Добавление элементов в столбец на основе уникальных элементов другого столбца - PullRequest
0 голосов
/ 08 сентября 2018

У меня есть матрица с именем single_matrix_with_time_id, первый столбец соответствует frame_number, второй столбец соответствует time, третий столбец с identity, четвертый столбец с error, пятый и шестой столбец с X and Y coordinates и седьмой столбец с Camera_id.

То, что я пытаюсь сделать, это взять уникальные элементы из второго столбца (time) и элементы, соответствующие уникальным элементам time из first and seventh column и добавить его к первому, второму и третьему элементам. столбец новой матрицы с именем final_plot_matrix. Я пытался сделать это в коде, показанном ниже, но это не дает мне ожидаемого результата. Код и изображение single_matrix_with_time_id прилагается. Любая помощь будет оценена.

final_plot_matrix = nan(length(unique(single_matrix_with_time_id(:,2)))+1,length(final_filtered_ant_id)+3);
final_plot_matrix(1,4:length(final_filtered_ant_id)+3) = 
final_filtered_ant_id;
final_plot_matrix = repelem(final_plot_matrix,1,2);
final_plot_matrix(:,1) = [];
final_plot_matrix(:,2) = [];
final_plot_matrix(:,3) = [];
final_plot_matrix(2:length(unique(single_matrix_with_time_id(:,2)))+1,3) = unique(single_matrix_with_time_id(:,2));
[C,ia,ic] = unique(single_matrix_with_time_id(:,2));
frame_number = ia(single_matrix_with_time_id(:,1));
Camera_id = ia(single_matrix_with_time_id(:,3))
final_plot_matrix(2:length(unique(single_matrix_with_time_id(:,2)))+1,2) = frame_number
final_plot_matrix(2:length(unique(single_matrix_with_time_id(:,2)))+1,1) = Camera_id

single_matrix_witj_time_id

1 Ответ

0 голосов
/ 09 сентября 2018

Похоже, что вы были на правильном пути, используя «уникальный», но это должно быть проще, чем это.Вызовите уникальные по времени данные (второй столбец), чтобы получить уникальные номера строк.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]);
...