查看单个帖子
旧 2019-12-14, 20:13   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 标记每次循环的循环值

我想用一个值标记从循环中出来的每个值。

假设我每次迭代都有可变数量的值。我希望这些值用它们出现的迭代来标记。

像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); 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); 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值。请注意,我假设您的向量为列向量-如果不是,则只需更改大小顺序即可。



更多&回答...
poster 当前离线   回复时引用此帖