У меня есть набор массивов данных, которые являются nx6, где 1-й 3 столбца являются координатами x, y, z траектории и n. Я написал сценарий в MATLAB, который позволяет мне построить каждую точку в последовательности, а затем превратить его в фильм, вот код:Matlab plot3 movie, где цвет каждой точки изменяется в зависимости от произвольного вектора
% attemt to make a movie!
test = cou{7}(:,1:3) % data arrays are stored in larger cell arrays
numPoints = length(test(:,1))
x = test(:,1)
y = test(:,2)
z = test(:,3)
h = figure(1)
set(h,'Position',[100 678 560 420])
for j=1:numPoints
plot3(test(1:j,1), test(1:j,2),test(1:j,3),'kd-')
grid('on')
xlim([min(x), max(x)])
ylim([min(y), max(y)])
zlim([min(z), max(z)])
M(j) = getframe(h);
end
movie(M,1,30)
movie2avi(M,'testMovie2.avi')
Это прекрасно работает, и я получаю фильм в формате .avi. Я получаю бриллианты, где каждая координата < x, y, z> и линия, которая соединяется со следующей точкой.
Однако мне нужно добавить разные цвета в зависимости от 5-го столбца в матрице nx6. В 5-м столбце есть числа от 0 до 8, для каждого номера требуется определенный цвет, так что каждая новая точка данных нанесена на цвет с уникальным номером в этом столбце (0 красным, 1 - синим и т. Д.).).
Из всего, что я прочитал в Интернете, кажется, что я должен закрыть один цвет или разделить точки на:
plot3(x1,y1,z1,s1,x2,y2,z2,s2, ...)
где x1, y1, z1, s1 будет указать первую координату с ами Defining цвет, маркер и линия, x2, y2, z2, s2 - вторая точка и ее спецификации и т. д.
Предпочтительно я мог бы определить какую-то матрицу S для спецификации цвета, чтобы я мог ее добавить на участке, таком как:
plot3(x(1:j),y(1:j),z(1:j),S(1:j))
Все связанные записи, которые я видел до сих пор, спрашивали/отвечали с помощью другого типа 3D-графика. Точки траектории перескакивают по всему. Так что мне действительно нужен этот тип графика, чтобы иметь возможность сделать фильм!
Приветствия, Risa
P.S. Я понимаю его не самый эффективный код, и теперь, как я его написал, я могу избавиться от тестового массива. Я работаю над этим большую часть дня и развился в этом. Я просто хочу, чтобы он работал, и я отредактирую его для эффективности!
Это похоже на то, что мне нужно! Спасибо! Что касается предупреждения, на моем рабочем компьютере у меня установлен R2013a, он не выдавал мне эту ошибку, когда я запускал код. Может быть, это и есть причина? – risa
Я использую R2012, так что это может быть причиной предупреждения. Обратите внимание: я обновил строку кода командой 'plot3': для того, чтобы уловить случай, когда у вас есть индекс 0 в качестве индекса цвета, спецификация цвета в' plot3' должна быть 'line_col (test (j, 5) +1, :) ', то есть вам нужно« добавить 1 »к значению' test (j, 5) '. Извините, что –
Да, я смог заставить его работать вчера вечером. Лично я считаю, что документация в Matlab нуждается в обновлении. Я использовал 'help plot3' в командной строке Matlab, и он устанавливает ** Различные типы линий, символы и цвета сюжета могут быть получены с помощью plot3 (X, Y, Z, s), где s - строка 1, 2 или 3 символа сделаны из символов, перечисленных в команде PLOT. plot3 (x1, y1, z1, s1, x2, y2, z2, s2, x3, y3, z3, s3, ...) объединяет графики , определяемые четырьмя точками (x, y, z, s) где x, y и z являются векторами или матрицами, а s - строками. ** но не упоминает команду «цвет»! – risa