Subscripted assignment dimension mismatch.
4 次查看(过去 30 天)
显示 更早的评论
Error in RDA (line 235)
S(j)=sqrt(sum((stag(b).Position-Hinds(j).Position).^2));
0 个评论
采纳的回答
Walter Roberson
2023-4-14
stag(b).Position
As outside observers, we have no idea what size of matrix that gives.
Hinds(j).Position
as outside observers, we have no idea what size of matrix that gives.
We can tell from the sum() that those values are not expected to be scalars, but they could be row vectors or they could be column vectors or they could be 2 or more dimensions. If they are 2 or more dimensions, then the sum() is only going to act over one of the dimensions, so the sum() would return a non-scalar that would not fit in the single output location.
Furthermore, if one of the Position outputs is a row vector but the other is a column vector, then the result of the subtraction would be a 2D array.
5 个评论
Walter Roberson
2023-4-16
VarSize=[model.t nVar];
That involves some values loaded from a .mat file, but it comes out as VarSize = [2 27]
RD(i).Position=unifrnd(VarMin,VarMax,VarSize);
You create random positions with size VarSize, which is 2 x 27.
S(j)=sqrt(sum((stag(b).Position-Hinds(j).Position).^2));
Both stag(b).Position and Hinds(j).Position end up 2 x 27, so subtracting them gives 2 x 27. Squaring that gives 2 x 27. sum() over an array is the summation over the first non-scalar dimension, which is the first dimension in this case. So that sum() is going to return a 1 x 27. sqrt() of a 1 x 27 is 1 x 27. So your right hand side will be 1 x 27 but your left side indicates you want to store that in a scalar.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!