2017-02-02 4 views
1

У меня есть матрица paths с четырьмя столбцами: первая имеет номер, который указывает, к какому path принадлежит строка, остальные три являются измерениями. Я хочу напечатать paths. Я делаю это с:Группировка строк матрицы по столбцу и plot3 пути, описанные в строках

for p = min(paths(1,:)):max(paths(1,:)) 
    path = paths(paths(:,1)==p,:); 
    plot3(path(:,2),path(:,3),path(:,4),'Color','k'); 
end 

С небольшим количеством функционального программирования в виду, я хотел бы знать: Как группа матрица paths в первой колонке и распечатайте пути для каждой группы?

ответ

0

Вы были очень близки к нему. Во-первых, вам нужно проходным значений в первой колонке (не строку как в вашем вопросе), и создать логический индекс для принятия только соответствующий путь и построить их (с помощью hold):

paths = [randi(4,50,1) rand(50,3)]; % example data 
for p = unique(paths(:,1)).' 
    path = paths(:,1)==p; % a logical index for path p 
    plot3(paths(path,2),paths(path,3),paths(path,4)); 
    hold on % to plot all the paths on the same axes 
end 
hold off % stop plotting on this axes 

Ниже приведен пример для вывода:

enter image description here

Смежные вопросы