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

使用不同的输入在matlab中运行函数并保存多个输出,matlab,Matlab,假设你有一些功能 x = foo(alpha, beta); 您希望测试函数的不同alpha值,同时使用与不同alpha值关联的名称保存不同的x值 例如,如果alpha=1:1:10 然后我想将x_1,x_2,…,x_9,x_10保存为单独的结果 我尝试过运行不同的循环等,但我不知道如何防止x值被替换有几种方法可以做到这一点 例如,如果要将结果保存到磁盘,可以运行 alpha = 1:10; for ii=1:length(alpha) x = foo(alpha(ii),beta);

假设你有一些功能

x = foo(alpha, beta);
您希望测试函数的不同alpha值,同时使用与不同alpha值关联的名称保存不同的x值

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


我尝试过运行不同的循环等,但我不知道如何防止x值被替换

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

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

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
初始化为
零(m,n,长度(alpha))
,并为每个循环分配
x(:,:,ii)
。如果输出是大小不同的数组,则将
x
初始化为单元格数组,将
x=cell(size(alpha))
,并将
foo的输出分配给
x{ii}