String value and sequently representation

2 visualizaciones (últimos 30 días)
Akmyrat
Akmyrat el 27 de Mayo de 2014
Comentada: Image Analyst el 27 de Mayo de 2014
Lets say i have string
M=['XASSANORXOOUOU']
and I want something like this
for i=1:7
Li=[M(i,i+1)]
so that it would give me like this result:
L1=XA
L2=SS
L3=AN
L4=OR
and so on....but this code
Li=[M(i,i+1)]
is not working. Could u help me please.
  3 comentarios
Akmyrat
Akmyrat el 27 de Mayo de 2014
yes John, that is the problem for now i can not do it in proper way, i tried this for i=1:7 L=M(2*i,2*i-1) end % but this gives like that answer L=XA, L=SS, L=AN...and so on. but i want it like this L1=XA, L2=SS, L3=AN...

Iniciar sesión para comentar.

Respuesta aceptada

Geoff Hayes
Geoff Hayes el 27 de Mayo de 2014
Editada: Geoff Hayes el 27 de Mayo de 2014
M is a matrix with a single row, so the code cannot access anything but that first row. As soon as i is greater than 1, then M(i,i+1) will fail with an index out of bounds exception. If you just want to get the pairs, then try something like:
for i=1:2:length(M) % since we are interested in the odd indices only
str = M(i:i+1); % get the two neighbouring characters
end
If you want to print out something like you have above, then just replace the middle line with
fprintf('L%d=%s\n',floor(i/2)+1,M(i:i+1));
If you are trying to save the values at each iteration to a variable named Li then that gets a little more challenging (is it even necessary?).
  1 comentario
Akmyrat
Akmyrat el 27 de Mayo de 2014
thanks a lot Geoff, it works...yes it is necessary :)

Iniciar sesión para comentar.

Más respuestas (1)

rifat
rifat el 27 de Mayo de 2014
Editada: rifat el 27 de Mayo de 2014
M=['XASSANORXOOUOU'];
for i=1:length(M)/2
string=['L' num2str(i) '=M(2*(i-1)+1:2*i)']
eval(string)
end

Community Treasure Hunt

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

Start Hunting!

Translated by