[英]Subscripted assignment dimension mismatch
这是代码清单,我在行nests(r,c)=nests(r,c)+stepsize.*randn(size(nests(r,c)));
遇到了上述错误nests(r,c)=nests(r,c)+stepsize.*randn(size(nests(r,c)));
现在请让我看看我的代码是什么对我来说是Matlab的新问题
for r = 1:numb_of_nest % for each particle
for c = 1:4
u=randn(size(nests(r,c)))*sigma;
v=randn(size(nests(r,c)));
step=u./abs(v).^(1/beta);
nests(r,c)=nests(r,c)+stepsize.*randn(size(nests(r,c)));
% Apply simple bounds/limits
ns_tmp=nests(r,c);
I=ns_tmp<Lb(c);
ns_tmp(I)=Lb(I);
% Apply the upper bounds
J=ns_tmp>Ub(c);
ns_tmp(J)=Ub(J);
% Update this new move
nests(r,c)=ns_tmp;
end
end
step=u./abs(v).^(1/beta);
nests(r,c)=nests(r,c)+stepsize.*randn(size(nests(r,c)));
在这里,您为变量step分配了一个值,但是随后使用了另一个名为stepsize的变量,该变量在此代码的任何地方都没有分配值。 这是故意的吗? 如果没有,stepssize可能是先前代码中的一些剩余变量,这会弄乱尺寸并给您带来此错误。
除了上述内容之外,您的代码中是否还nests
了一个普通的二维矩阵? 如果是这样,则不必每次都使用size(nests(r,c))
-因为您要给出两个下标,所以结果总是一直为1
。 还是nests
一个细胞阵列? 在这种情况下,您可能希望使用大括号{
}
而不是普通的括号进行索引,以获取位于单元格内的矩阵的大小。
当您将某个维度mxn
的值分配给不同维度的下标变量时,会发生此错误。
在您的情况下,假设nests
没有第三维,则将分配给标量( 1x1
)变量。 仅当您尝试分配的值也是标量时,此方法才有效。 由于您收到错误,所以可能不是。 尺寸可以是非标量的唯一位置是stepsize
,因此要解决此错误,请确保stepsize
是标量值 。
根据您在较早的注释中给出的定义( stepsize=0.01*step.*(nests(r,c)-best);
),此问题转化为确保best
是一个标量值 。 可能是通过下标,由于我不知道什么是best
所以我无法确切告诉您如何。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.