複合文字列を配列に格納しようとすると、ASCII または Unicode 文字番号のリストとして格納されます。したがって、文字列 'Hello world' を配列の最初の行として挿入しようとすると、最初の行は実際には次のようになります。
>>> my_strs = [];
>>> my_strs(1,:) = "Hello world"
my_strs =
72 101 108 108 111 32 119 111 114 108 100
これは暗黙的my_strs
に 1 行 11 列の配列になることに注意してください。2 番目の行として文字列を追加しようとしても、長さが 11 文字コードであると評価されない場合、エラーが発生します。
>>> my_strs(2,:) = "Hi there"
error: A(I,J,...) = X: dimensions mismatch
したがって、空白を追加して、文字列になるときにすべての日の長さを埋めるか (すべての文字列の長さが均一になるようにする)、またはすべての文字列を異なる長さを持つことができるセル配列に格納するなど、より便利なことを行う必要があります。 .
セル配列でそれを行うには、次のようにします。
>>> my_strs = {};
>>> my_strs{1} = "Hello world"
my_strs =
{
[1,1] = Hello world
}
>>> my_strs{2} = "Hi there"
my_strs =
{
[1,1] = Hello world
[1,2] = Hi there
}
>>> my_strs{1,1}
ans = Hello world
>>> my_strs{1,2}
ans = Hi there
上記の質問で示したループで使用しているインデックス規則にそれをマップするのは簡単なはずです。
完全な開示:私は個人的に Matlab をボイコットすることを好むため、Octave を使用して上記のコードをテストしています。その理由が気になる場合は、メタなどで尋ねることができますが、この質問の目的のために、Octave でのテストが正しい答えが何であるかに違いはないと思います。