пятница, 28 марта 2008 г.

Мультики в Matlab: просто, но не качественно

Анимация - самый красивый и наглядный способ отображения динамических процессов.

В Matlab мультики можно делать например так: грузим поочередно файлы с данными, потом строим по каждому график, добавляем картинку как фрейм в мультик. Есть, кстати, ещё какой-то способ.

Теперь надо сохранить анимашку. Хорошо бы в avi - там можно регулировать fps (mpeg, вроде бы, не предоставляет такой возможности, там всегда fps = 30 или типа того). Вроде всё просто:

mov = avifile(dstfile, 'fps', fps);

for i = 1:framenum

%строим очередной график
F = getframe(gcf);
mov = addframe(mov,F);
end;


mov = close(mov);

Беда в том, что в получающемся мультике поверхность ч.б., а цвет присутствует только в виде разводов там и сям. Единственное, что помогает - это загрузка colormap из оттенков серого, но ведь хочется как обычно - всех цветов радуги:) Плюс ещё не всегда получается записать в уже созданный файл, видимо , Matlab забывает освободить дескриптор.

Можно ещё скачать такую примочку - mpgwrite. Это одноимённые .m и .dll файлы, которые надо положить в любую папку, прописанную в Path программы Matlab. Позволяет писать в mpg. С цветами всё в порядке. Но почему-то сцена помещается не полностью - словно сделан положительный zoom.

Короче, задумка была замечательная - дать возможность создавать Matlab с помощью всего нескольких команд. Но реализация подкачала.

Комментариев нет: