从循环标记每次迭代的值

问题描述:

我想用一个值标记每个循环中出现的值。从循环标记每次迭代的值

说我有每个迭代出来的可变数量的值。我希望这些值被标记为它们从哪个迭代中出来。

像 1-1,2-1 , 3-1,

1-2,2-2 , 3-2,4-2 ,

其中第一个数字是来自循环的值,第二个数字是来自它的迭代。 我觉得有一种方法,我只是无法找到它。

好吧,所以这里有一些代码。

for c=1:1:npoints; 
    for i=1:1:NN; 
     if ((c-1)*spacepoints)<=PL(i+1) && ((c-1)*spacepoints)>=PL(i); 
      local(c)=((c)*spacepoints)-PL(i); 

     end 
     if ((c-1)*spacepoints)>=PL(NN); 
      local(c)=((c)*spacepoints)-PL(NN); 
      element(i)=NN; 
     end 

    end 

我想标记每个本地值与它来自i:NN的迭代。 PL是一个向量,输出是每次迭代的一组向量。

+0

你目前有什么类型的价值?发布一些我们可以使用的代码! :) – corsiKa 2011-02-17 05:16:27

目前,因为它是在您的内部1:NN循环中,您的local(c)变量正在更新或覆盖。你从来没有申请的local以前的值,所以它是不是有些迭代优化算法(?)...

也许一个简单的解决方案是将尺寸/类型的local矢量更改为矩阵 。假设local的尺寸为[npoints 1]。相反,你可以制作尺寸为[npoints NN]。它现在是一个2d阵列(npoints行和NN列的矩阵)。使用第二维度的每个(假定列)矢量存储来自内部循环:

local = zeros([npoints NN]); 

%# ... code in bewteen ... 

for c=1:1:npoints; 
    for i=1:1:NN; 
     if ((c-1)*spacepoints)<=PL(i+1) && ((c-1)*spacepoints)>=PL(i); 
      local(c, i)=((c)*spacepoints)-PL(i); 

     end 
     if ((c-1)*spacepoints)>=PL(NN); 
      local(c, i)=((c)*spacepoints)-PL(NN); 
      element(i)=NN; 
     end 

    end 
end 

c'th行您local矩阵然后将对应于从所述内环的NN的值。请注意,我假设你的向量是列向量 - 如果没有,只需更改大小的顺序。

对于这种快速的问题,我想创建一个单元阵列:

for k = 1:12 
    results{k} = complicated_function(...); 
end 

如果输出真的很复杂,然后我返回一个结构与领域有关的输出:

for k = 1:12 
    results{k}.file = get_filename(...); 
    results{k}.result = ...; 
end