poster
2019-12-14, 20:13
我想用一个值标记从循环中出来的每个值。
假设我每次迭代都有可变数量的值。我希望这些值用它们出现的迭代来标记。
像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值。请注意,我假设您的向量为列向量-如果不是,则只需更改大小顺序即可。
更多&回答... (https://stackoverflow.com/questions/5025296)
假设我每次迭代都有可变数量的值。我希望这些值用它们出现的迭代来标记。
像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值。请注意,我假设您的向量为列向量-如果不是,则只需更改大小顺序即可。
更多&回答... (https://stackoverflow.com/questions/5025296)