将字符串索引转换为矩阵

Jor*_*ata 4 matlab

我在matlab中有以下字符串

V= 'abcdefghijklmnñopqrstuvwxyz';
Run Code Online (Sandbox Code Playgroud)

然后我有一个由9个字符组成的单词,由我的'V'字母表中的字符组成.

k = 'peligroso';
Run Code Online (Sandbox Code Playgroud)

我想根据我的字母创建一个方形矩阵(3x3),其单词"k"的索引,这将是输出.(注意我正在考虑的范围是0到26,所以'a'char确实有索引0)

   16    4     11
   8     6     18
   15    19    15

我这样做的代码是:

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];
Run Code Online (Sandbox Code Playgroud)

但我认为必须有一个更优雅的解决方案来实现同样的,任何想法?

PS:我没有使用ASCII值,因为char'ñ'必须在我的字母表中

Jon*_*nas 7

对于无循环解决方案,您可以使用ISMEMBER,它可以处理字符串以及数字:

K = zeros(3); %# create 3x3 array of zeros

[~,K(:)] = ismember(k,V); %# fill in indices

K = K'-1; %# make K conform to expected output
Run Code Online (Sandbox Code Playgroud)