Subscripted assignment dimension mismatch
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Shane McNamara
am 25 Okt. 2017
Kommentiert: Shane McNamara
am 26 Okt. 2017
Can anyone highlight why i am getting this error in the below code please?
domainSize = [50 50];
domain = zeros(domainSize);
domain(24:26,24:26) = 1;
% Generate Position Arrays
[particlePosition(:,1), particlePosition(:,2)] =find(domain);
for i = 1:length(particlePosition)
%Select Direction to Move
switch ceil(4 * rand)
case 1
dR = [-1 0];
case 2
dR = [+1 0];
case 3
dR = [0 -1];
case 4
dR = [0 +1];
end
%New Particle Location
tempPosition = particlePosition + dR;
%Move Particle
particlePosition(i,:) = tempPosition;
end
0 Kommentare
Akzeptierte Antwort
Roger Stafford
am 25 Okt. 2017
There are quite a few things wrong with this code.
1) In “for i = 1:length(particlePosition)” you will get only three values of i from 1 to 3, but you have nine “particles” to move.
2) The part of the code that begins with “%New Particle Location” is located outside the for-loop so only the last “particle” is moved.
3) The line “tempPosition = particlePosition + dR;” attempts to add ‘particlePosition’, which is a 9 x 2 matrix to ‘dR’, which is only a 1 x 2 vector. Naturally Matlab will object strenuously to such an ill-advised attempt. This is undoubtedly the source of your error message.
2 Kommentare
Walter Roberson
am 25 Okt. 2017
Note: since R2016b, adding a 9 x 2 and a 1 x 2 will work, and will be the same as if you had use bsxfun() to do the addition.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!