2016-03-28 6 views
0

Предположим, у меня есть матрица nx3 (в этом примере 100x3), где каждый столбец представляет координату x, y, z в некотором дискретном образце времени в 3d. Я хочу использовать функцию animatedLine для отслеживания координат с максимум 10 точками в данный момент времени. Я использую документацию Matlab, но все еще придерживаюсь того, как это сделать правильно.Matlab: Анимированная Линия в 3d

Нужно ли предварительно определить сетку или может ли Matlab автоматически делать это с учетом данных? (Для этого примера, матрица является случайной, однако, в самом наборе данных, матрица известна)

A = rand(100, 3) 
x = A(:, 1); 
y = A(:, 2); 
z = A(:, 3); 

grid on; 
h = animatedline('MaximumNumPoints', 10); 

for k = 1:length(x) 
addpoints(h,x(k),y(k),z(k)); 
drawnow 
end 
+0

В чем проблема, с которой вы сталкиваетесь? Ваш код кажется, что он должен работать отлично, за исключением того, что ваш 'MaximumNumPoints' должен быть, вероятно, 100. – Suever

+0

@Suever Мой график находится в 2d, и ничего не отображается. Я изменил его на 100, все еще не работает. – Sagistic

+0

Уверены ли вы, что у вас есть 3D-просмотр? 'Вид (3)'? Работает отлично для меня: http://i.imgur.com/LUsv1EV.gif – Suever

ответ

2

Похоже, вы не переключаясь на 3D вид и animatedline не изменяют вид для вы автоматически. Из-за этого вам нужно будет указать 3D-представление самостоятельно, используя view(3).

A = rand(100, 3) 
x = A(:, 1); 
y = A(:, 2); 
z = A(:, 3); 

grid on; 
h = animatedline('MaximumNumPoints', 10); 

% Force a 3D view 
view(3); 

for k = 1:length(x) 
    addpoints(h,x(k),y(k),z(k)); 
    drawnow 
end 

И результат как анимированный GIF.

enter image description here

+0

Я скопировал и вставил код. Я получаю следующую ошибку: Один или несколько выходных аргументов, не назначенных во время вызова «анимированной линии». Ошибка в animatedplot (строка 8) h = анимационная линия ('MaximumNumPoints', 10); – Sagistic

+0

@Sagistic Какая версия MATLAB? – Suever

+0

Я использую версию 2014a – Sagistic

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