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
興味深いことに、uint8やuint16などの数値変換関数を使って、文字列の文字を数値コードに変換できます。char関数は整数ベクトルを文字に戻します。
例
スクリプトファイルを作成し、以下のコードを入力します。
ライブデモmy_string = 'Tutorial''s Point'; str_ascii = uint8(my_string) % 8ビットASCII値 str_back_to_char= char(str_ascii) str_16bit = uint16(my_string) % 16ビットASCII値 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の主な文字列関数の概要を示します。
| 関数 | 目的 |
|---|---|
| 文字配列へのテキスト格納、文字配列の結合など | |
| blanks | 空白文字の文字列を作成 |
| cellstr | 文字配列から文字列のセル配列を作成 |
| char | 文字配列(文字列)に変換 |
| iscellstr | 入力が文字列のセル配列かどうかを判定 |
| ischar | アイテムが文字配列かどうかを判定 |
| sprintf | データを文字列にフォーマット |
| strcat | 文字列を水平に連結 |
| strjoin | セル配列内の文字列を単一の文字列に結合 |
| 文字列の部分識別、部分文字列の検索と置換 | |
| ischar | アイテムが文字配列かどうかを判定 |
| isletter | アルファベット文字である配列要素 |
| isspace | スペース文字である配列要素 |
| isstrprop | 文字列が指定カテゴリかどうかを判定 |
| sscanf | 文字列からフォーマットデータを読み取り |
| strfind | ある文字列を別の文字列内で検索 |
| strrep | 部分文字列を検索して置換 |
| strsplit | 指定区切り文字で文字列を分割 |
| strtok | 文字列の選択された部分 |
| validatestring | テキスト文字列の妥当性をチェック |
| symvar | 式内のシンボリック変数を特定 |
| regexp | 正規表現マッチ(大文字小文字区別) |
| regexpi | 正規表現マッチ(大文字小文字非区別) |
| regexprep | 正規表現を使用して文字列置換 |
| regexptranslate | 文字列を正規表現に変換 |
| 文字列比較 | |
| strcmp | 文字列比較(大文字小文字区別) |
| strcmpi | 文字列比較(大文字小文字非区別) |
| strncmp | 文字列の最初のn文字を比較(大文字小文字区別) |
| strncmpi | 文字列の最初のn文字を比較(大文字小文字非区別) |
| 大文字・小文字変換、空白の作成・削除 | |
| deblank | 文字列末尾の空白を削除 |
| strtrim | 文字列の先頭と末尾の空白を削除 |
| lower | 文字列を小文字に変換 |
| upper | 文字列を大文字に変換 |
| strjust | 文字配列を揃える |
例
以下の例は、上記の文字列関数のいくつかを示しています。
文字列のフォーマット
スクリプトファイルを作成し、以下のコードを入力します。
ライブデモ 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
文字列の結合
スクリプトファイルを作成し、以下のコードを入力します。
ライブデモ % 文字列のセル配列 str_array = {'red','blue','green', 'yellow', 'orange'}; % セル配列内の文字列を単一の文字列に結合 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'}; % strrep関数は部分文字列を検索して置換 new_student = strrep(students(8), 'Reva', 'Poulomi') % 名を表示 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
MATLAB
- MATLAB徹底解説:数値計算環境の決定版
- MATLAB変数の理解:基礎から実例まで徹底解説
- MATLAB必須コマンドリファレンス:効率的な計算のための完全ガイド
- MATLABデータ型完全ガイド:15種類の基本型と変換・判定関数
- MATLAB演算子完全ガイド:算術・論理・ビット演算・集合操作
- MATLAB行列完全マスター:作成・参照・操作・削除の基礎
- MATLAB:多次元配列と特殊配列をマスターする
- MATLABコロン演算子をマスター:ベクトル作成と効率的な反復処理
- MATLABの数値型:型、格納、変換
- MATLAB関数:定義、ワークスペース、入出力
- Java文字列をマスター:生成、メソッド、ベストプラクティス