Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 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 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 23:26


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.