String value and sequently representation

1 view (last 30 days)
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 Comments
Akmyrat
Akmyrat on 27 May 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...

Sign in to comment.

Accepted Answer

Geoff Hayes
Geoff Hayes on 27 May 2014
Edited: Geoff Hayes on 27 May 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?).

More Answers (1)

rifat
rifat on 27 May 2014
Edited: rifat on 27 May 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!