我想用一个值标记循环中出现的每个值。
假设每次迭代都有可变数量的值。我希望这些值可以通过它们出来的迭代来标记。
像 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 :(得分:2)
对于这种快速问题,我喜欢创建一个单元格数组:
for k = 1:12
results{k} = complicated_function(...);
end
如果输出真的很复杂,那么我返回一个带有与输出相关的字段的结构:
for k = 1:12
results{k}.file = get_filename(...);
results{k}.result = ...;
end
答案 1 :(得分:0)
目前正如现在一样,在您的内部1:NN
循环中,您的local(c)
变量正在更新或覆盖。你从不应用local
的先前值,所以它不是一些迭代优化算法(?)......
也许一个简单的解决方案是将local
的大小/类型从向量更改为矩阵。假设local
的大小为[npoints 1]
。相反,你的大小为[npoints NN]
。它现在是一个二维数组(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
local
矩阵的 c'th 行将对应于内循环的NN值。请注意,我假设您的向量是列向量 - 如果不是,只需更改大小的顺序。