Сохранение изображений в цикле - PullRequest
0 голосов
/ 01 декабря 2011

Я пытаюсь выяснить, как сохранить несколько изображений в цикле.


$piece1=[1,1,1;1,1,1;1,1,1];
$piece2=[0,1,0;1,1,1;1,0,1];
$piece3=[0,0,0;0,0,0;0,0,0];

$N=3;

$for i=1:N
$    (('piece' num2str(N)),('piece' num2str(N)),'jpeg');
$end

я не могу заставить его работать, спасибо за любую помощь

Ответы [ 2 ]

1 голос
/ 01 декабря 2011
piece1 = [1,1,1;1,1,1;1,1,1];
piece2 = [0,1,0;1,1,1;1,0,1];
piece3 = [0,0,0;0,0,0;0,0,0];

N=3;

for i=1:N
    imwrite(eval(['piece' num2str(i)]),['piece' num2str(i) '.jpeg']);
end
0 голосов
/ 01 декабря 2011

Если под «Сохранить» вы подразумеваете сохранение его в файл JPEG, то следующий код делает это:

piece1=[1,1,1;1,1,1;1,1,1];
piece2=[0,1,0;1,1,1;1,0,1];
piece3=[0,0,0;0,0,0;0,0,0];

N = 3

for i=1:N
    piece = eval(sprintf('piece%d', i));
    file_name = sprintf('piece%d.jpg', i);
    imwrite(piece, file_name);
end

но в целом ваш подход не лучший способ написания кода в Matlab. Вы можете использовать ячейки, например:

piece{1}=[1,1,1;1,1,1;1,1,1];
piece{2}=[0,1,0;1,1,1;1,0,1];
piece{3}=[0,0,0;0,0,0;0,0,0];

for i=1:numel(piece)
    file_name = sprintf('piece%d.jpg', i);
    imwrite(piece{i}, file_name);
end
...