Filter löschen
Filter löschen

String value and sequently representation

1 Ansicht (letzte 30 Tage)
Akmyrat
Akmyrat am 27 Mai 2014
Kommentiert: Image Analyst am 27 Mai 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 Kommentare
Akmyrat
Akmyrat am 27 Mai 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...

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Geoff Hayes
Geoff Hayes am 27 Mai 2014
Bearbeitet: Geoff Hayes am 27 Mai 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 Kommentar
Akmyrat
Akmyrat am 27 Mai 2014
thanks a lot Geoff, it works...yes it is necessary :)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

rifat
rifat am 27 Mai 2014
Bearbeitet: rifat am 27 Mai 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