2011-12-01 86 views
-1

我试图弄清楚如何在一个循环中保存多个图像。在一个循环中保存图像


$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 

我不能让它工作, 感谢您的帮助

+0

请勿在变量名称中使用后缀。相反,学习单元格,并尝试使用它们来保存图像,如果你真的需要这样做:http://bit.ly/vKwXC8 – petrichor

回答

1
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

如果“保存”你的意思是将其保存为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 

但是一般来说你的a pproach不是在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