Построить несколько строк в Matlab без for-цикла

#matlab

#matlab

Вопрос:

В Matlab у меня есть две матрицы Nx3 P и Q , и каждая строка представляет точку. Я хочу построить линии между точками, которые находятся в одной строке матриц.

Следующий код делает это:

 for i=1:N
  plot3( [P(i,1) Q(i,1)], ...
         [P(i,2) Q(i,2)], ...
         [P(i,3) Q(i,3)] )
end
  

Есть ли способ сделать это без for-loop?

Если я задаю plot3 точки просто как векторы, Matlab рисует линии между Q(i,:) и P(i 1,:) в дополнение к линиям, которые я хочу.

Ответ №1:

Попробуйте

 plot3([P(:, 1) Q(:, 1)]', ...
      [P(:, 2) Q(:, 2)]', ...
      [P(:, 3) Q(:, 3)]')
  

Если вы передаете матрицу в функции построения графиков Matlab, каждый столбец соответствует одной нарисованной строке.

Ответ №2:

Вероятно, вы хотите этого:

 h = quiver3(P(:,1), P(:,2), P(:,3), Q(:,1), Q(:,2) , Q(:,3),0);

set(h,'ShowArrowHead','off');