运行一个函数并在matlab中使用不同的输入保存多个输出

时间:2012-09-23 21:24:31

标签: matlab

假设你有一些功能

x = foo(alpha, beta);

并且您希望测试不同alpha值的函数,同时使用与不同alpha值关联的名称保存不同的x值。

例如alpha = 1:1:10; 然后我想将x_1 , x_2 ,........,x_9 , x_10保存为单独的结果

我尝试过运行不同的循环等,但我无法弄清楚如何防止x值被替换

1 个答案:

答案 0 :(得分:2)

有几种方法可以做到这一点

例如,如果要将结果保存到磁盘,则可以运行

alpha = 1:10;

for ii=1:length(alpha)

  x = foo(alpha(ii),beta);

  %# save to disk
  save(sprintf('run_%i.mat',ii),'x');

end

相反,如果您要存储所有输出,以便绘制,例如,您可以将它们存储在数组中

alpha = 1:10;
x = zeros(size(alpha));

for ii=1:length(alpha)

  x(ii) = foo(alpha(ii),beta);

end

%# now you can plot the results
plot(alpha,x)

请注意,上面假设foo的输出是标量。如果输出始终为m-by-n数组,则将x初始化为zeros(m,n,length(alpha)),并为每个循环指定x(:,:,ii)。如果输出是不同大小的数组,则将x初始化为单元格数组,x = cell(size(alpha)),并将foo的输出分配给x{ii}