Avi в матлаб

62408

Не подскажете, можно ли в Matlab осуществить работу так, чтобы при создании movie и перевода его в avi в фильме получалось несколько участков, соответствующих разным subplot? То есть, например, я рисую два динамически меняющихся графика на двух участках и хочу оба поместить в одну aviшку. Можно ли так сделать?

seregen-ka

Если у тебя есть две авишки, с ними можно сделать все что угодно.
А матлабом я не пользуюсь

Evgewkin

   numframes = 100;
hp = 2 * pi / numframes;

num_frames_per_second = 10;
dur = numframes / num_frames_per_second;

aviobj = avifile ( 'sinwave.avi', 'fps', num_frames_per_second );

num_nodes = 100;
h = 2 * pi / num_nodes;
i = 1 : num_nodes + 1;

x = ( i - 1 ) * h;

for j = 1 : numframes+1
y1 = sin( x - ( j - 1 ) * hp);
y2 = cos(x - ( j - 1 ) * hp);
subplot(2, 1, 2)
plot(x, y2 )

subplot(2, 1, 1)
plot ( x, y1 )

axis tight
frame = getframe (gcf);
aviobj = addframe (aviobj, frame );
end

aviobj = close (aviobj);

Попробуй так. Сейчас нет Матлаба под рукой, могут быть ошибки.

Evgewkin


clear all
numframes = 100;
hp = 2 * pi / numframes;

num_frames_per_second = 10;

aviobj=avifile('sinwave.avi','compression','indeo5');

x = linspace(0, 6, 100)

figure('units','normalized','outerposition',[0 0 1 1]);

subplot(2, 1, 2)
set(gca,'nextplot','replacechildren');
set(gca, 'xlim', [0, 6], 'ylim', [-1, 1])

subplot(2, 1, 1)
set(gca,'nextplot','replacechildren');
set(gca, 'xlim', [0, 6], 'ylim', [-1, 1])

%hold on
for j = 1 : numframes + 1
y1 = x./(j/10).*sin( x - (j - 1 ) * hp);
y2 = cos(x - (j - 1 ) * hp);

subplot(2, 1, 2)
plot(x, y1)

subplot(2, 1, 1)
plot(x, y2)

frame = getframe(gcf);
aviobj = addframe(aviobj, frame);
end

aviobj = close(aviobj);

Так разрешение будет больше, размер файла меньше и оси фиксированные.
Оставить комментарий
Имя или ник:
Комментарий: