MATLAB - Eval功能和打印许多图

时间:2017-06-19 17:13:42

标签: matlab

变量是32x8x40940双矩阵。这是我想要完成的一个例子:

plot(squeeze(variableName(1,1,:)))
plot(squeeze(variableName(1,2,:)))
plot(squeeze(variableName(1,3,:)))

...循环重复

plot(squeeze(variableName(2,1,:)))

...重复上面的序列

除了我想要保存图而不是仅生成所有图。我也希望它们以图像形式(例如png),因为我可以使用我拥有的其他软件来组织它们。

以下eval函数是我给出的一个示例,但文档缺少我在这种情况下使用的示例。我想让它自动将图表保存到我的目录中的特定区域。

eval( [ 'print( ''-dpng'', ''..\folder\another_Folder_', num2str( var ), '.png'')' ] ); 
% 'var' being iteration number within loop

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

作为一般规则,您应该避免使用eval来获得无数的安全性,可读性和一般良好的编码原因。 备注hereherehere

如果您想保存循环数字,请考虑使用Matlab中的saveas函数。来自help

x = [2 4 7 2 4 5 2 5 1 4];
bar(x);
saveas(gcf,'Barchart.png')

gcf是在matlab中打开的当前数字。

在您的情况下,一旦编写循环,您可以在使用saveas命令之前将这些分配给数组或其他一些数据结构。您还可以将计数器附加到文件名(确保将整数转换为字符串,以便strcat不会失败。

y[loopcounter]=plot(squeeze(variableName(1,1,:)))
saveas(y[loopcounter],strcat('file',str(loopcounter),'.extension_format'))