Effacer les filtres
Effacer les filtres

assign a value to a string

20 vues (au cours des 30 derniers jours)
Saad
Saad le 14 Déc 2012
Dear all,
I have a list of string:
txt={'BBB3', 'BBB2', 'BBB1', 'A3', 'A2', 'A1','AA3','AA2','AA1'};
i would like to assign a value to each string. For instance,
Here is my code for i=1:length(txt) if isequal(txt{'i'},'BBB3')
txt{'i'}=11;
elseif isequal(txt{'i'},'BBB2')
txt{'i'}=12;
elseif isequal(txt{'i'},'BBB1')
txt{'i'}=13;
elseif isequal(txt{'i'},'A3')
txt{'i'}=14;
elseif isequal(txt{'i'},'A2')
txt{'i'}=15;
elseif isequal(txt{'i'},'A1')
txt{'i'}=16;
elseif isequal(txt{'i'},'AA3')
txt{'i'}=17;
elseif isequal(txt{'i'},'AA2')
txt{'i'}=18;
else
txt{'i'}=20;
end
end
Basically the output I am looking for is:
txt={11, 12, 13, 14, 15, 16, 17, 18 ,19};
however when I run the code and type txt in the screen in order to retrieve the final output i still get the initial input which is txt={'BBB3', 'BBB2', 'BBB1', 'A3', 'A2', 'A1','AA3','AA2','AA1'};
I might have missed something somewhere. ANy help is much appreciated Thanks

Réponse acceptée

Image Analyst
Image Analyst le 14 Déc 2012
Try it without the apostrophes around the i:
txt={'BBB3', 'BBB2', 'BBB1', 'A3', 'A2', 'A1','AA3','AA2','AA1'};
for k =1 : length(txt)
if isequal(txt{k},'BBB3')
txt{k}=11;
elseif isequal(txt{k},'BBB2')
txt{k}=12;
elseif isequal(txt{k},'BBB1')
txt{k}=13;
elseif isequal(txt{k},'A3')
txt{k}=14;
elseif isequal(txt{k},'A2')
txt{k}=15;
elseif isequal(txt{k},'A1')
txt{k}=16;
elseif isequal(txt{k},'AA3')
txt{k}=17;
elseif isequal(txt{k},'AA2')
txt{k}=18;
else
txt{k}=20;
end
end
celldisp(txt);
  1 commentaire
Saad
Saad le 14 Déc 2012
Thanks a lot it is working now...thank you for your help

Connectez-vous pour commenter.

Plus de réponses (1)

Wayne King
Wayne King le 14 Déc 2012
Modifié(e) : Wayne King le 14 Déc 2012
Don't assign like this:
txt{'i'}
assign like this
txt{i}
For example
for ii =1:length(txt)
if isequal(txt{ii},'BBB3')
txt{ii}=11;
elseif isequal(txt{ii},'BBB2')
txt{ii}=12;
elseif isequal(txt{ii},'BBB1')
txt{ii}=13;
elseif isequal(txt{ii},'A3')
txt{ii}=14;
elseif isequal(txt{ii},'A2')
txt{ii}=15;
elseif isequal(txt{ii},'A1')
txt{ii}=16;
elseif isequal(txt{ii},'AA3')
txt{ii}=17;
elseif isequal(txt{ii},'AA2')
txt{ii}=18;
else
txt{ii}=20;
end
end
  1 commentaire
Saad
Saad le 14 Déc 2012
Thanks a lot it is working now...thank you for your help

Connectez-vous pour commenter.

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by