2

假设你有一些功能

x = foo(alpha, beta);

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

例如,如果alpha = 1:1:10; 那么我想另存x_1 , x_2 ,........,x_9 , x_10为单独的结果

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

4

1 回答 1

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

于 2012-09-23T21:27:42.270 回答