Как построить все элементы матрицы в Matlab, не зная размера? - PullRequest
0 голосов
/ 02 мая 2019

Допустим, есть следующая матрица

A = [ 1 2 2 ;
      1 2 3 ;
      2 3 4 ;
      3 4 5 ;
      4 4 6 ;
      1 11 12]

Я пытаюсь использовать quiver3 для построения строки следующим образом:

quiver3(0,0,0,A(1:1),A(1:2),A(1:3),0);
quiver3(0,0,0,A(2:1),A(2:2),A(2:3),0);
quiver3(0,0,0,A(3:1),A(3:2),A(3:3),0);

и так до последней строки, но как применить quiver3 для каждой строки матрицы вместо создания одной строки в строке? Кроме того, размер матрицы не всегда один и тот же, поэтому выполнение одной команды на строку может привести к появлению нескольких строк без прорисовки иногда и, возможно, не достаточного количества строк для построения другой.
(Пример: предоставленная матрица имеет 6 строк, поэтому я делаю 6 выражений quiver3, но позже, если матрица имеет только 3 строки, она выдает ошибку, и если позже у нее будет 8 строк, будет 2 вектора / строки, которые не график).
Я предполагаю, что это связано с оператором range и meshgrid, но я не могу понять, как.

1 Ответ

3 голосов
/ 02 мая 2019

Если ваша матрица A имеет N строки, где каждая строка хранит компоненты [u v w] для передачи на quiver3, то вы можете построить все стрелки N в одном вызове quiver3, если вы убедитесь, что все входные аргументы имеют одинаковый размер. Если вы планируете все их, начиная с начала координат, вам нужно создать вектор нулей N -by-1, который будет использоваться для входных данных x, y и z:

A = [1 2 2;
     1 2 3;
     2 3 4;
     3 4 5;
     4 4 6;
     1 11 12];
z = zeros(size(A, 1), 1);
quiver3(z, z, z, A(:, 1), A(:, 2), A(:, 3), 0);

Обратите внимание на синтаксис индексации , который я использовал для разбиения A на столбцы для передачи в quiver3. И вот результирующий график для данных данных образца:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...