Как создавать фильмы на каждом поколении цикла 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

Другие вопросы по тегам