Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我想用一个值标记从循环中出来的每个值。
假设我每次迭代都有可变数量的值。我希望这些值用它们出现的迭代来标记。 像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值。请注意,我假设您的向量为列向量-如果不是,则只需更改大小顺序即可。 更多&回答... |
![]() |
![]() |