assigning numbers to string elements
9 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
KA
el 18 de Nov. de 2015
Hi I have the following which creates 2 strings called left and right from a single string with the positions shifted by a single element.
pep='abcd';
sizepep=size(pep);
left=pep(1:(sizepep(2)-1));
right=pep(2:(sizepep(2)));
% so in this example left=abc and right = bcd
% if I were to assign numerical values to letters - eg.
a=1;
b=2;
c=3;
d=4;
How do I turn these two strings (left and right) into vectors so I can add each element together?
left=[1 2 3];
right=[2 3 4];
sum=[3 5 7]
Thank you in advance for advice.
1 comentario
Walter Roberson
el 25 de Nov. de 2015
Please avoid naming a variable "sum" as that interferes with using the MATLAB routine named "sum"
Respuesta aceptada
Tushar Athawale
el 25 de Nov. de 2015
Editada: Tushar Athawale
el 25 de Nov. de 2015
It is possible to map strings to numeric arrays based on the predefined character maps. The following code snippet can be used in your example:
% Setup map
map('a')=1;
map('b')=2;
map('c')=3;
map('d')=4;
% Automatic setup invere of map (from map)
letter=map>0;
mapi(map(letter))=char(find(letter));
left = 'abc';
right = 'bcd';
% map string to numeric array.
left_code = map(left)
right_code = map(right)
% You can also map numeric array to string
left_decode = mapi(left_code)
sm = left_code + right_code;
Thanks to Bruno Luong for suggesting this approach in one of his posts in the MATLAB newsgroup:
Más respuestas (1)
Walter Roberson
el 25 de Nov. de 2015
[~, left_code] = ismember(left, 'abcd');
[~, right_code] = ismember(right, 'abcd');
sum_code = left_code + right_code
0 comentarios
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!