Как создавать фильмы на каждом поколении цикла for в сюжете Matlab
Я хочу изобразить сферную функцию как поверхность или контурную диаграмму, а также определить положение и пригодность лучшего индивида, которые оцениваются сферной функцией данных, полученных из гауссовского распределения. Сюжет будет меняться в каждом поколении, поэтому я получаю фильм. Кроме того, на другом рисунке я хочу построить контур сферной функции, наложенной на всю совокупность, сформированную из распределения Гаусса, с сохранением подходящих особей, окрашенных в красный цвет. Это из поколения в поколение должен дать другой фильм.
Это в основном реализация алгоритма оценки распределения (EDA). Кто-нибудь знает, как это сделать?
РЕДАКТИРОВАТЬ
K= 4
for l = 1 : K
contour(X,Y,ph);
hold on
plot(bestId, 'rx');
end
Приведенный выше код должен наложить контурный график и BestId. Для каждой петли l генерируется bestId и накладывается на контурный график. Это поколение BestInd должно проходить для каждого л. но среди поколений bestId от 1 до 4 есть одно, которое является лучшим из них, и мы должны получить это после четырех поколений, которое накладывается на контурный график. Теперь я хочу, чтобы это поколение было фильмом с расширенной итерацией от 1 до 4, чтобы я мог видеть, как генерируется bestId, пока не будет достигнут лучший (оптимальный) результат. это то, что я имел в виду под фильмом в Matlab. Есть идеи о том, как это можно сделать?
1 ответ
Для создания фильма, отражающего изменения в цифрах, я использую комбинацию класса avifile
и функции getframe()
а также addframe()
Вот пример
aviobj = avifile('example.avi','compression','None');
t = linspace(0,2.5*pi,40);
fact = 10*sin(t);
fig=figure;
[x,y,z] = peaks;
for k=1:length(fact)
h = surf(x,y,fact(k)*z);
axis([-3 3 -3 3 -80 80])
axis off
caxis([-90 90])
F = getframe(fig);
aviobj = addframe(aviobj,F);
end
close(fig);
aviobj = close(aviobj);
Вы можете найти больше информации здесь
http://www.mathworks.nl/help/matlab/ref/avifile.html
http://www.mathworks.nl/help/matlab/ref/movie.html
http://www.math.canterbury.ac.nz/~c.scarrott/MATLAB_Movies/movies.html
-----------------Редактировать после обсуждения в комментариях------------------
pm89
предложил другой способ в комментариях. Класс VideoWriter кажется более современным и современным. Пример использования можно найти в конце страницы ниже
http://www.mathworks.nl/help/matlab/ref/videowriterclass.html