Matlab-strings

提供:Dev Guides
移動先:案内検索

MATLAB-文字列

MATLABでは、文字列の作成は非常に簡単です。 実際、何度も使用しています。 たとえば、コマンドプロンプトで次を入力します-

my_string = 'Tutorials Point'

MATLABは上記のステートメントを実行し、次の結果を返します-

my_string = Tutorials Point

MATLABはすべての変数を配列と見なし、文字列は文字配列と見なされます。 whos コマンドを使用して、上記で作成した変数を確認しましょう-

whos

MATLABは上記のステートメントを実行し、次の結果を返します-

Name           Size            Bytes  Class    Attributes
my_string      1x16               32  char

興味深いことに、 uint8uint16 などの数値変換関数を使用して、文字列内の文字を数値コードに変換できます。 char 関数は、整数ベクトルを文字に変換して戻します-

スクリプトファイルを作成し、それに次のコードを入力します-

my_string = 'Tutorial''s Point';
str_ascii = uint8(my_string)        % 8-bit ascii values
str_back_to_char= char(str_ascii)
str_16bit = uint16(my_string)       % 16-bit ascii values
str_back_to_char = char(str_16bit)

あなたがファイルを実行すると、次の結果が表示されます-

str_ascii =

   84  117  116  111  114  105   97  108   39  115   32   80  111  105  110  116

str_back_to_char = Tutorial's Point
str_16bit =

   84  117  116  111  114  105   97  108   39  115   32   80  111  105  110  116

str_back_to_char = Tutorial's Point

長方形の文字配列

これまでに説明した文字列は、1次元の文字配列です。ただし、それ以上を保存する必要があります。 プログラムにもっと次元のテキストデータを保存する必要があります。 これは、長方形の文字配列を作成することにより実現されます。

長方形の文字配列を作成する最も簡単な方法は、2つ以上の1次元文字配列を、必要に応じて垂直または水平に連結することです。

あなたは、次のいずれかの方法で文字列を垂直に組み合わせることができます-

  • MATLAB連結演算子 [] を使用し、各行をセミコロン(;)で区切ります。 このメソッドでは、各行に同じ数の文字が含まれている必要があることに注意してください。 異なる長さの文字列の場合、必要に応じてスペース文字を埋め込む必要があります。
  • char 関数を使用します。 文字列の長さが異なる場合、charは短い文字列の末尾に空白を埋め込み、各行の文字数が同じになるようにします。

スクリプトファイルを作成し、それに次のコードを入力します-

doc_profile = ['Zara Ali                             '; ...
               'Sr. Surgeon                          '; ...
               'R N Tagore Cardiology Research Center']
doc_profile = char('Zara Ali', 'Sr. Surgeon', ...
                  'RN Tagore Cardiology Research Center')

あなたがファイルを実行すると、次の結果が表示されます-

doc_profile =
Zara Ali
Sr. Surgeon
R N Tagore Cardiology Research Center
doc_profile =
Zara Ali
Sr. Surgeon
RN Tagore Cardiology Research Center

あなたは、次のいずれかの方法で文字列を水平方向に組み合わせることができます-

  • MATLAB連結演算子 [] を使用して、入力文字列をコンマまたはスペースで区切ります。 このメソッドは、入力配列の末尾のスペースを保持します。
  • 文字列連結関数 strcat を使用します。 このメソッドは、入力の末尾のスペースを削除します。

スクリプトファイルを作成し、それに次のコードを入力します-

name =     'Zara Ali                             ';
position = 'Sr. Surgeon                          ';
worksAt =  'R N Tagore Cardiology Research Center';
profile = [name ', ' position ', ' worksAt]
profile = strcat(name, ', ', position, ', ', worksAt)

あなたがファイルを実行すると、次の結果が表示されます-

profile = Zara Ali      , Sr. Surgeon      , R N Tagore Cardiology Research Center
profile = Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center

文字列をセル配列に結合

前回の説明から、配列内のすべての文字列は同じ長さでなければならないため、異なる長さの文字列を結合するのは面倒なことは明らかです。 文字列の末尾に空白スペースを使用して、文字列の長さを均等にしました。

ただし、文字列を結合するより効率的な方法は、結果の配列をセル配列に変換することです。

MATLABセル配列は、異なるサイズとタイプのデータを配列に保持できます。 セル配列は、さまざまな長さの文字列を格納するためのより柔軟な方法を提供します。

*cellstr* 関数は、文字配列を文字列のセル配列に変換します。

スクリプトファイルを作成し、それに次のコードを入力します-

name =     'Zara Ali                             ';
position = 'Sr. Surgeon                          ';
worksAt =  'R N Tagore Cardiology Research Center';
profile = char(name, position, worksAt);
profile = cellstr(profile);
disp(profile)

あなたがファイルを実行すると、次の結果が表示されます-

{
   [1,1] = Zara Ali
   [2,1] = Sr. Surgeon
   [3,1] = R N Tagore Cardiology Research Center
}

MATLABの文字列関数

MATLABは、文字列を作成、結合、解析、比較、操作する多数の文字列関数を提供します。

次の表は、MATLABの文字列関数の簡単な説明を提供します-

関数

目的

テキストを文字配列に格納したり、文字配列を結合したりするための関数。

空白

空白文字の文字列を作成します

cellstr

文字配列から文字列のセル配列を作成

char

文字配列に変換(文字列)

iscellstr

入力が文字列のセル配列かどうかを判別

イシャール

アイテムが文字配列かどうかを判別

sprintf

データを文字列にフォーマットする

strcat

文字列を水平に連結する

strjoin

セル配列内の文字列を単一の文字列に結合します

文字列の一部を識別し、部分文字列を見つけて置換するための関数

イシャール

アイテムが文字配列かどうかを判別

アルファベットの配列要素

isspace

スペース文字である配列要素

isstrprop

文字列が指定されたカテゴリのものかどうかを判別

sscanf

文字列からフォーマットされたデータを読み取る

strfind

別の文字列内で1つの文字列を見つける

strrep

部分文字列を検索して置換

strsplit

指定された区切り文字で文字列を分割

strtok

文字列の選択された部分

検証する

テキスト文字列の有効性を確認する

シンバル

式のシンボリック変数を決定する

正規表現

正規表現に一致(大文字と小文字を区別)

正規表現

正規表現に一致(大文字と小文字を区別しない)

正規表現

正規表現を使用して文字列を置換

正規表現

文字列を正規表現に変換します

文字列比較のための関数

strcmp

文字列の比較(大文字と小文字を区別)

strcmpi

文字列の比較(大文字と小文字は区別されません)

strncmp

文字列の最初のn文字を比較(大文字と小文字を区別)

strncmpi

文字列の最初のn文字を比較します(大文字と小文字は区別されません)

文字列を大文字または小文字に変更し、空白を作成または削除するための関数

空白

文字列の末尾から末尾の空白を削除します

strtrim

文字列から先頭と末尾の空白を削除します

文字列を小文字に変換します

アッパー

文字列を大文字に変換

ジャスト

文字配列を揃える

次の例は、上記の文字列関数の一部を示しています-

文字列のフォーマット

スクリプトファイルを作成し、それに次のコードを入力します-

A = pi*1000*ones(1,5);
sprintf(' %f \n %.2f \n %+.2f \n %12.2f \n %012.2f \n', A)

あなたがファイルを実行すると、次の結果が表示されます-

ans =  3141.592654
   3141.59
   +3141.59
      3141.59
   000003141.59

文字列の結合

スクリプトファイルを作成し、それに次のコードを入力します-

%cell array of strings
str_array = {'red','blue','green', 'yellow', 'orange'};

% Join strings in cell array into single string
str1 = strjoin(str_array, "-")
str2 = strjoin(str_array, ",")

あなたがファイルを実行すると、次の結果が表示されます-

str1 = red-blue-green-yellow-orange
str2 = red,blue,green,yellow,orange

文字列の検索と置換

スクリプトファイルを作成し、それに次のコードを入力します-

students = {'Zara Ali', 'Neha Bhatnagar', ...
            'Monica Malik', 'Madhu Gautam', ...
            'Madhu Sharma', 'Bhawna Sharma',...
            'Nuha Ali', 'Reva Dutta', ...
            'Sunaina Ali', 'Sofia Kabir'};

% The strrep function searches and replaces sub-string.
new_student = strrep(students(8), 'Reva', 'Poulomi')
% Display first names
first_names = strtok(students)

あなたがファイルを実行すると、次の結果が表示されます-

new_student =
{
   [1,1] = Poulomi Dutta
}
first_names =
{
   [1,1] = Zara
   [1,2] = Neha
   [1,3] = Monica
   [1,4] = Madhu
   [1,5] = Madhu
   [1,6] = Bhawna
   [1,7] = Nuha
   [1,8] = Reva
   [1,9] = Sunaina
   [1,10] = Sofia
}

文字列の比較

スクリプトファイルを作成し、それに次のコードを入力します-

str1 = 'This is test'
str2 = 'This is text'
if (strcmp(str1, str2))
   sprintf('%s and %s are equal', str1, str2)
else
   sprintf('%s and %s are not equal', str1, str2)
end

あなたがファイルを実行すると、次の結果が表示されます-

str1 = This is test
str2 = This is text
ans = This is test and This is text are not equal