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 文字列内の文字を数値コードに変換します。 文字 関数は整数ベクトルを文字に変換します −
例
スクリプト ファイルを作成し、次のコードを入力します −
ライブデモ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 cell 配列は、さまざまなサイズと型のデータを配列に保持できます。 cell 配列は、さまざまな長さの文字列を格納するためのより柔軟な方法を提供します。
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 | 文字配列から文字列のセル配列を作成 |
文字 | 文字配列(文字列)に変換 |
iscellstr | 入力が文字列のセル配列かどうかを判断する |
ischar | item が文字配列かどうかを判断する |
sprintf | データを文字列にフォーマット |
strcat | 文字列を水平に連結 |
strjoin | セル配列内の文字列を単一の文字列に結合 |
文字列の一部を識別し、部分文字列を検索して置換する関数 | |
ischar | item が文字配列かどうかを判断する |
一文字 | アルファベットの配列要素 |
スペース | 空白文字の配列要素 |
isstrprop | 文字列が指定されたカテゴリに属しているかどうかを判断する |
sscanf | 文字列から書式設定されたデータを読み取る |
strfind | 別の文字列内で 1 つの文字列を検索 |
strrep | 部分文字列を検索して置換 |
strsplit | 指定された区切り文字で文字列を分割 |
strtok | 文字列の選択部分 |
検証文字列 | テキスト文字列の有効性をチェック |
symvar | 式のシンボリック変数を決定 |
正規表現 | 正規表現に一致 (大文字と小文字を区別) |
正規表現 | 正規表現に一致 (大文字と小文字を区別しない) |
regexprep | 正規表現を使用して文字列を置換 |
regexptranslate | 文字列を正規表現に変換 |
文字列比較の関数 | |
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
MATLAB