Main Content

strread

(非推奨) 書式付きデータの string からの読み込み

strread は推奨されません。代わりに textscan を使用してください。

説明

A = strread(str) は、入力文字ベクトル str から 1 行 N 列のベクトル A へ数値データを読み取ります。ここで N は、str の空白で区切られた数値の数に等しくなります。この構文は、数値データを含む文字ベクトルを指定して使用します。

[A,B,...] = strread(str) は、入力文字ベクトル str からスカラー出力変数 AB などに数値データを読み取ります。出力変数の数は、str の空白で区切られた数と等しい必要があります。

[A,B,...] = strread(str,format) は、指定された書式を使用して str から変数 AB などへデータを読み取ります。出力変数の数は、引数 format の書式指定子 (%s または %d など) の数と等しい必要があります。書式指定子を 1 つのみ使用した場合、1 つの出力変数へ str のすべてのデータを読み取ることができます。

strread の書式の表は、有効な書式指定子を一覧表示します。

[A,B,...] = strread(str,format,N) は、format 文字ベクトルによって決定される str から最初の N 個の値を読み取ります。ここで、N は、ゼロより大きい整数です。N が -1 の場合、strreadstr のすべての値を読み取ります。str が数値データのみを含む場合、format に空の文字ベクトル ('') を設定できます。

[A,B,...] = strread(___,Name,Value) は、Name,Value 引数を使用して strread をカスタマイズします。str が数値データのみを含む場合、format に空の文字ベクトル ('') を設定できます。

すべて折りたたむ

スペースで区切られた数値を含む文字ベクトルを作成します。strread を使用して数値データを数値配列に読み取ります。

str = '0.41 8.24 3.57 6.24 9.27';
a = strread(str)
a = 1×5

    0.4100    8.2400    3.5700    6.2400    9.2700

スペースで区切られた数値を含む文字ベクトルを作成します。strread を使用して数値データを別々の変数に読み取ります。

str = '0.41 8.24 3.57 6.24 9.27';
[a, b, c, d, e] = strread(str)
a = 0.4100
b = 8.2400
c = 3.5700
d = 6.2400
e = 9.2700

スペースで区切られた数値を含む文字ベクトルを作成します。strread を使用して、文字ベクトルの最初の 3 つの数値のみを読み取り、浮動小数点としてデータを書式化します。

str = '0.41 8.24 3.57 6.24 9.27';
a = strread('0.41 8.24 3.57 6.24 9.27', '%4.2f', 3)
a = 3×1

    0.4100
    8.2400
    3.5700

スペースで区切られた数値を含む文字ベクトルを作成します。形式 %3.1f を指定することによって、データを小数点以下 1 桁までに切り捨てます。2 番目の指定子 %*1d は、関数 strread に対して小数点以下の残りの桁を読み取らないように指示します。

str = '0.41 8.24 3.57 6.24 9.27';
a = strread(str, '%3.1f %*1d')
a = 5×1

    0.4000
    8.2000
    3.5000
    6.2000
    9.2000

スペースで区切られた数値を含む文字ベクトルを作成します。2 つの変数に 6 つの数値を読み取ります。書式指定子 %f を再利用して、同じ書式を各出力に適用します。指定した書式の数は出力数に一致している必要があります。

str = '0.41 8.24 3.57 6.24 9.27 3.29';
[a, b] = strread(str, '%f %f')
a = 3×1

    0.4100
    3.5700
    9.2700

b = 3×1

    8.2400
    6.2400
    3.2900

単語と数値がスペースで区切られ、その各ペアがコンマで区切られた単語と数値を含む文字ベクトルを作成します。

str = 'Section 4, Page 7, Line 26';

strread を使用して、1 つの変数にテキストを読み取り、別の変数に数値データを読み込みます。書式入力 '%s' は、最初の出力が空白文字で区切られた文字ベクトルであることを指定します。'%d,' は、2 番目の出力が符号付き整数値であり、',' 文字を無視することを指定します。

[name, value] = strread(str, '%s %d,')
name = 3x1 cell
    {'Section'}
    {'Page'   }
    {'Line'   }

value = 3×1

     4
     7
    26

各ペアがコンマで区切られた単語と数値を含む文字ベクトルを作成します。

str = 'Section 4, Page 7, Line 26';

スペースの代わりにコンマで区切った文字ベクトルを読み取ります。'%s' 書式を使用して、文字ベクトルの読み取りを指定します。3 つの出力を指定しているため、3 つの書式を指定する必要があります。

[a, b, c] = strread(str,'%s %s %s', 'delimiter', ',')
a = 1x1 cell array
    {'Section 4'}

b = 1x1 cell array
    {'Page 7'}

c = 1x1 cell array
    {'Line 26'}

入力引数

すべて折りたたむ

入力テキスト。文字配列または string スカラーとして指定します。

データ型: char | string

出力形式。出力の書式とデータ型を指定する文字配列または string スカラーとして指定し、戻り引数の数と型を決定します。戻り引数の数は、format 文字ベクトルで指定した変換指定子の数と一致しなければなりません。

関数 strread は、文字ベクトル全体が読み取られるまで str を読み取ります。str の構成要素より書式指定子が少ない場合、関数 strread は書式指定子を先頭から再度適用します。

format 文字ベクトルは、C 言語の fscanf ルーチンの変換指定子および規則のサブセットをサポートしています。format 文字ベクトル内の空白文字は無視されます。

strread の書式

形式

アクション

出力

リテラル

(通常の文字)

一致した文字を無視します。たとえば、文字ベクトル内に数値 (部門番号) に続く Dept が存在する場合、Dept をスキップして数値のみを読み取るには、文字ベクトル format'Dept' を使用します。

なし

%d

符号付き整数値を読み込みます。

double 配列

%u

整数値を読み込みます。

double 配列

%f

浮動小数点値を読み込みます。

double 配列

%s

空白で区切られた文字ベクトルを読み込みます。

文字ベクトルの cell 配列

%q

二重引用符付きの文字ベクトルを引用符を無視して読み込みます。

文字ベクトルの cell 配列

%c

空白を含む文字を読み込みます。

文字配列

%[...]

大かっこの中に指定した文字を含む最大長の文字ベクトルを読み取ります。

文字ベクトルの cell 配列

%[^...]

大かっこの中に指定していない文字を含む最大長の空でない文字ベクトルを読み込みます。

文字ベクトルの cell 配列

%*...

* で続く文字を無視します。

出力なし

%w...

w で指定されるフィールド幅を読み込みます。%f 書式は、%w.pf をサポートします。ここで、w はフィールド幅で、p は精度です。

 

データ型: char | string

値の数。0 より大きい整数として指定します。N-1 の場合、strreadstr のすべての可能な値を検出します。

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: strread(str,'','whitespace','\t')

空白文字。文字ベクトルまたは string 配列として指定します。strread は入力記号で指定された文字を空白として扱います。既定値は '\b\r\n\t' です。

記号空白文字
\bバックスペース
\n改行
\rキャリッジ リターン
\t水平タブ
\\バックスラッシュ
%%パーセント符号
''一重引用符

区切り記号。区切り記号を含む文字ベクトルまたは string スカラーとして指定します。既定の設定は、1 つ以上の空白文字です。たとえば、文字ベクトル str が区切り記号としてセミコロンを使用する場合は、'delimiter'';' として指定します。

指数文字。数値 4.3e12 の 'e' など、指数として扱われる文字を含む文字ベクトルまたは string スカラーとして指定します。既定値は 'eEdD' です。

バッファー サイズ。最大長の文字ベクトルを含む正の整数をバイト単位で指定します。既定の設定は 4095 です。

コメント スタイル。strread がコメントを指定するために使用する記号のスタイルを含む文字ベクトルまたは string スカラーとして指定します。strread は対応する記号で指定された文字を無視します。

スタイルアクション
'matlab'% の後の文字を無視します。
'shell'# の後の文字を無視します。
'c'/**/ の間の文字を無視します。
'c++'// の後の文字を無視します。

区切り記号のあるファイルの空の数値フィールドに対して返す値。数値スカラーとして指定します。

ヒント

  • 入力文字ベクトルを改行文字 (\n) で終了した場合、関数 strread は、emptyvalue 文字を使用して小さなサイズの配列をパディングすることによって同じサイズの配列を返します。

    [A,B,C] = strread(sprintf('5,7,1,9\n'),'%d%d%d', ...
                 'delimiter', ',', 'emptyvalue',NaN)
    A =
         5
         9
    B =
         7
       NaN
    C =
         1
       NaN

    この例の入力文字ベクトルから \n を削除すると、配列 A は 2 行 1 列の配列のままですが、BC は 1 行 1 列になります。

バージョン履歴

R2006a で導入