Effacer les filtres
Effacer les filtres

How to solve : Subscripted assignment dimension mismatch error

3 vues (au cours des 30 derniers jours)
bahar kh
bahar kh le 26 Mai 2017
Commenté : Andrei Bobrov le 26 Mai 2017
Dear guys I am new in MATLAB. It is a simple code which i make it. but i get this error message"Subscripted assignment dimension mismatch." I dont know whats the problem with that. would you please help me?
A=[]
A=randi(10,2,3)
for i=1:2
for j=1:3
if A(i,j)>3
A(i,j)='ok';
elseif A(i,j)==2
A(i,j)='no'
else
A(i,j)=' ';
end
end
end
  1 commentaire
Stephen23
Stephen23 le 26 Mai 2017
Modifié(e) : Stephen23 le 26 Mai 2017
A is a numeric array, which you then try to force non-scalar char vector into the elements of. It is not possible to put multiple array elements into one element of another array. If r and c are scalars, then:
X(r,c) = 1; % okay
X(r,c) = [1,2] % an error

Connectez-vous pour commenter.

Réponse acceptée

bahar kh
bahar kh le 26 Mai 2017
still I have a question.when I change the code to the following form it works too.why? the last code and new one, almost are the same. but why the original code in my question doesn't work but the modified version works? what is the difference between them? thanks in advance
the modifiied version is here A=[] A=randi(10,2,3) for i=1:2 for j=1:3 if A(i,j)>3 A(i,j)=0; elseif A(i,j)==2 A(i,j)=2 else A(i,j)=6; end end end
  1 commentaire
Andrei Bobrov
Andrei Bobrov le 26 Mai 2017
>> A=randi(10,2,3)
A =
9 2 7
10 10 1
>> A(1,1) = 2
A =
2 2 7
10 10 1
>> A(2,1) = 'no'
Assignment has more non-singleton rhs dimensions than non-singleton subscripts
>> double('no')
ans =
110 111
>>

Connectez-vous pour commenter.

Plus de réponses (1)

Andrei Bobrov
Andrei Bobrov le 26 Mai 2017
Use cell - array ( Aout) for output data in your function
A=randi(10,2,3);
Aout = cell(size(A);
for i=1:2
for j=1:3
if A(i,j)>3
Aout{i,j}='ok';
elseif A(i,j)==2
Aout{i,j}='no'
else
Aout{i,j}=' ';
end
end
end
  1 commentaire
bahar kh
bahar kh le 26 Mai 2017
Modifié(e) : bahar kh le 26 Mai 2017
thanks@Andrei Bobrov. It works for me. but still I have a question.when I change the code to the following form it works too.why? the last code and new one, almost are the same. but why the original code in my question doesn't work but the modified version works? what is the difference between them? thanks in advance
the modifiied version is here A=[] A=randi(10,2,3) for i=1:2 for j=1:3 if A(i,j)>3 A(i,j)=0; elseif A(i,j)==2 A(i,j)=2 else A(i,j)=6; end end end

Connectez-vous pour commenter.

Catégories

En savoir plus sur Graphics Performance dans Help Center et File Exchange

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by