ここでパフォーマンスが本当に問題にならない限り、私はルックアップ テーブルを気にしません。文字を数字に変換する簡単な方法があります。
各文字列を取得し、 を使用して大文字にしupper
、「A」を減算して 1 を追加して、すべての「A」を「1」に、「B」を「2」などに変換します。
s = 'Bob';
num_s = upper(s) - 'A' + 1;
私自身の開発が、文字を調べ、それを別のベクトルのエントリに一致させ、それに対応する値を思い出す方法を学ぶことにまだ興味があります。– user1499689
これは、Matlab で簡単に行うことができます。26 要素のルックアップ テーブルがあるとします。lookup
lookup = zeros(26,1);
% define the lookup table
for i=1:numel(lookup)
lookup(i) = 2*i - 7; % some random function
end
ここで、上記の文字から数値への変換を使用します。
s =
Joe
>> lookup( upper(s) - 'A' + 1 )
ans =
13
23
3
ここで重要なのは、Matlab を使用すると、任意の行列に別の行列をインデックス付けできることです: M(A)
. 行列の要素は、行列A
へのインデックスとして扱われますM
。文字列s
は char 行列で、これを減算して数値行列に変換します'A'
。行lookup(...)
は、この変換された行列の要素を使用して、行列にインデックスを付けますlookup
。
ちなみに、これは割り当てにも使用できます。たとえば、各文字の数を (大文字と小文字を区別せずに) 保持する場合は、次のようにします。
% Initialize counts to zero somewhere at the beginning
counts = zeros(26,1);
... % do your stuff
% let 's' be an alphabetic word (only A-Z and a-z)
s_inds = upper(s) - 'A' + 1;
counts( s_inds ) = counts( s_inds ) + 1; % increment the counts of all characters in 's'