построить матрицы в желаемых цветах - PullRequest
1 голос
/ 08 июля 2011

как можно присвоить определенный цвет значению из матрицы. Например, у меня есть матрица 10by10 со значениями от 0 до 9. После этого я хотел бы получить «шахматную доску», где 0 = белый, 1 = черный, 2 = синий ... и т. Д.

2-й вопрос если я запускаю некоторые операции, где мои матрицы меняются с каждым циклом, и я запускаю, скажем, 10 петель (k = 10) - возможно ли сделать видео из этих 10 сюжетных картинок, которые я буду получать после каждого цикла. (Я программирую какой-то сотовый автомат, поэтому я хотел бы посмотреть, как ситуация меняется со временем).

Спасибо

1 Ответ

1 голос
/ 08 июля 2011

Рассмотрим этот пример:

%# lets create a 10-by-10 matrix, of values in the range [0,9]
M = fspecial('gaussian',10,2.5);
M = (M-min(M(:))) ./ range(M(:));
M = round(M*9);

%# prepare video output
vid = VideoWriter('vid.avi');
vidObj.Quality = 100;
vid.FrameRate = 5;
open(vid);

%# display matrix
h = imagesc(M);
axis square
caxis([0 10])
colormap(jet(10))
colorbar

%# capture frame
writeVideo(vid,getframe);

%# iterate changing matrix
for i=1:50
    M = rem(M+1,10);          %# circular increment
    set(h, 'CData',M)         %# update displayed matrix

    writeVideo(vid,getframe); %# capture frame

    drawnow                   %# force redisplay
end

%# close and save video output
close(vid);

enter image description here

Вы можете использовать собственную цветовую карту, просто создать матрицу cmap размером 10 на 3, каждая строка содержит значения RGB и передать ее в вызов colormap(cmap)


Для версий MATLAB старше R2010b вы можете использовать функцию avifile вместо VideoWriter:

%# prepare video output
vid = avifile('vid.avi', 'fps',5, 'quality',100);

%# iterations
for i=1:50
    %# ...

    %# capture frame
    vid = addframe(vid, getframe(gcf));

    drawnow
end

%# close and save video output
vid = close(vid);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...