Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

文字ベクトルの cell 配列

テキストを "文字ベクトル" として保存するには、一重引用符で囲みます。通常、文字ベクトルは、ファイル名やプロットのラベルなど、単一の情報と見なされるテキストをもちます。ファイル名のリストなど、多数のテキストがある場合は、それらを cell 配列に格納できます。すべての要素が文字ベクトルである cell 配列は、"文字ベクトルの cell 配列" です。

メモ

  • テキストの格納方法として推奨されているのは "string 配列" を使用することです。string データ型をもつ変数を作成する場合、その変数を cell 配列ではなく string 配列に格納します。詳細については、string 配列および文字配列内のテキストコードを更新して string を受け入れるを参照してください。

  • "string の cell 配列" というフレーズはこのような cell 配列を説明するために頻繁に使用されてきましたが、こうした cell 配列には string ではなく文字ベクトルが保持されるため、このフレーズは正確ではありません。

文字ベクトルの cell 配列の作成

文字ベクトルの cell 配列を作成するには、任意の cell 配列を作成する場合と同様に、中かっこ {} を使用します。たとえば、文字ベクトルの cell 配列を使用して名前のリストを格納します。

C = {'Li','Sanchez','Jones','Yang','Larson'}
C = 1x5 cell
    {'Li'}    {'Sanchez'}    {'Jones'}    {'Yang'}    {'Larson'}

cell 配列の内容が同じサイズである必要はないため、C 内の文字ベクトルは異なる長さにすることができます。C 内の文字ベクトルの長さを特定するには、関数 strlength を使用します。

L = strlength(C)
L = 1×5

     2     7     5     4     6

cell 配列内の文字ベクトルへのアクセス

cell 配列内の文字ベクトルにアクセスするには、中かっこ {} を使用してインデックスを付けます。最初の cell の内容を抽出し、文字ベクトルとして格納します。

C = {'Li','Sanchez','Jones','Yang','Larson'};
chr = C{1}
chr = 
'Li'

異なる文字ベクトルを最初の cell に代入します。

C{1} = 'Yang'
C = 1x5 cell
    {'Yang'}    {'Sanchez'}    {'Jones'}    {'Yang'}    {'Larson'}

cell の内容ではなくサブセットを参照するには、小かっこを使用してインデックスを付けます。

C(1:3)
ans = 1x3 cell
    {'Yang'}    {'Sanchez'}    {'Jones'}

インデックスを付けることにより、cell の内容にアクセスできますが、cell 配列を入力として受け入れるほとんどの関数は、cell 配列全体に対して機能します。たとえば、関数 strcmp を使用して C の内容を文字ベクトルと比較できます。一致すると strcmp1 を返し、それ以外の場合は 0 を返します。

TF = strcmp(C,'Yang')
TF = 1x5 logical array

   1   0   0   1   0

TF で加算をして、一致の数を求めることができます。

num = sum(TF)
num = 2

TF を論理インデックスとして使用して、C 内の一致項目を返します。小かっこを使用してインデックスを付けると、出力は一致項目のみを含む cell 配列になります。

M = C(TF)
M = 1x2 cell
    {'Yang'}    {'Yang'}

cell 配列から string 配列への変換

string 配列は MATLAB® および MathWorks® 製品全体でサポートされています。そのため、文字ベクトルの cell 配列ではなく string 配列を使用することが推奨されます (ただし、string 配列を入力として受け入れる MATLAB 関数は、文字ベクトルと、文字ベクトルの cell 配列も受け入れます)。

文字ベクトルの cell 配列は string 配列に変換できます。文字ベクトルの cell 配列を変換するには、関数 string を使用します。

C = {'Li','Sanchez','Jones','Yang','Larson'}
C = 1x5 cell
    {'Li'}    {'Sanchez'}    {'Jones'}    {'Yang'}    {'Larson'}

str = string(C)
str = 1x5 string
    "Li"    "Sanchez"    "Jones"    "Yang"    "Larson"

実際、関数 string は、cell 配列の内容がすべて string に変換可能であれば、どのような cell 配列でも変換します。

C2 = {5, 10, 'some text', datetime('today')}
C2=1×4 cell array
    {[5]}    {[10]}    {'some text'}    {[03-Aug-2023]}

str2 = string(C2)
str2 = 1x4 string
    "5"    "10"    "some text"    "03-Aug-2023"

参考

| | | |

関連するトピック