assign a value to a string

21 views (last 30 days)
Saad
Saad on 14 Dec 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

Accepted Answer

Image Analyst
Image Analyst on 14 Dec 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 Comment
Saad
Saad on 14 Dec 2012
Thanks a lot it is working now...thank you for your help

Sign in to comment.

More Answers (1)

Wayne King
Wayne King on 14 Dec 2012
Edited: Wayne King on 14 Dec 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 Comment
Saad
Saad on 14 Dec 2012
Thanks a lot it is working now...thank you for your help

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!