I have the following string in matlab
V= 'abcdefghijklmnñopqrstuvwxyz';
Then I have a word of 9 characters consisting of chars from my 'V' alphabet.
k = 'peligroso';
I want to create a square matrix (3x3) with the indices of my word 'k' according to my alphabet, this would be the output. (Note that the range I'm considering is 0 to 26, so 'a' char does have index 0)
16 4 11 8 6 18 15 19 15
My code for doing this is:
K = [findstr(V, k(1))-1 findstr(V, k(2))-1 findstr(V, k(3))-1;findstr(V, k(4))-1 findstr(V, k(5))-1 findstr(V, k(6))-1; findstr(V, k(7))-1 findstr(V, k(8))-1 findstr(V, k(9))-1];
But I think there must be a more elegant solution to achieve the same, any ideas?
PS: I'm not using ASCII values since char 'ñ' must be inside my alphabet
For a loop-free solution, you can use ISMEMBER, which works on strings as well as on numbers:
K = zeros(3); %# create 3x3 array of zeros
[~,K(:)] = ismember(k,V); %# fill in indices
K = K'-1; %# make K conform to expected output
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With