从循环标记每次迭代的值
问题描述:
我想用一个值标记每个循环中出现的值。从循环标记每次迭代的值
说我有每个迭代出来的可变数量的值。我希望这些值被标记为它们从哪个迭代中出来。
像 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是一个向量,输出是每次迭代的一组向量。
答
目前,因为它是在您的内部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
你目前有什么类型的价值?发布一些我们可以使用的代码! :) – corsiKa 2011-02-17 05:16:27