我想用一个值来标记从我的循环中出来的每个值。
假设我有一个可变数量的值,这些值从每次迭代中产生。我希望通过它们来自哪个迭代来标记这些值。
比如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是一个向量,输出是每次迭代的一组向量。
发布于 2011-02-17 20:12:17
目前,在您的内部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然后,local矩阵的第c行将与来自内循环的NN值相对应。请注意,我已经假设您的向量是一个列向量-如果不是,只需更改大小的顺序。
发布于 2011-02-17 15:48:42
对于这种快速问题,我喜欢创建一个单元格数组:
for k = 1:12
results{k} = complicated_function(...);
end如果输出真的很复杂,那么我返回一个结构,其中包含与输出相关的字段:
for k = 1:12
results{k}.file = get_filename(...);
results{k}.result = ...;
endhttps://stackoverflow.com/questions/5025296
复制相似问题