Main Content

textread

(非推奨) テキスト ファイルからデータを読み取り、複数の出力へ書き込み

textread は推奨されません。代わりに textscan を使用してください。詳細については、互換性についての考慮事項を参照してください。

説明

[Var1,Var2,...,VarN] = textread(filename,format) は、ファイル全体を読み取るまで、指定した書式を使ってファイル filename から変数 [Var1,Var2,...,VarN] にデータを読み取ります。textread は、既知の書式をもつテキスト ファイルの読み取りに有用です。textread は、固定書式ファイルと自由書式ファイルの両方を取り扱います。

関数 textread は、入力から文字群を一致させ、変換します。各入力フィールドは、空白文字以外の文字のグループとして定義され、次の空白や区切り記号、最大フィールド幅のいずれかまで拡張します。繰り返される区切り記号は有意ですが、繰り返される空白文字は 1 つのものとして扱われます。

[Var1,Var2,...,VarN] = textread(filename,format,N) は、指定された formatN 回再利用してデータを読み取ります。N がゼロより小さい場合、textread はファイル全体を読み取ります。

[Var1,Var2,...,VarN] = textread(___,Name,Value) は、前述の構文の入力引数のいずれかに加え、1 つ以上の Name,Value のペアの引数を使用して、オプションを指定します。

すべて折りたたむ

サンプル データ 'scan1.dat' の最初の行は次のとおりです。

09/12/2005 {'Level1'} 12.34 45 1.23e+10 Inf NaN {'Yes'} 5.1+3i

上記は、% 書式を使って、自由書式ファイルとしてファイルの最初の行を読み込みます。

[date,level,x,y,answer] = textread('scan1.dat','%s %s %f %d %s',1)
date = 1x1 cell array
    {'09/12/2005'}

level = 1x1 cell array
    {'Level1'}

x = 12.3400
y = 45
answer = 1x1 cell array
    {'1.23e10'}

サンプル データ 'scan1.dat' の最初の行は次のとおりです。

09/12/2005 {'Level1'} 12.34 45 1.23e+10 Inf NaN {'Yes'} 5.1+3i

浮動小数点値を無視して、固定書式ファイルとして、ファイルの最初の行を読み込みます。

[date,level,x,y,answer] = textread('scan1.dat','%s Level%d %f %d %s',1)
date = 1x1 cell array
    {'09/12/2005'}

level = 1
x = 12.3400
y = 45
answer = 1x1 cell array
    {'1.23e10'}

空のセルをもつファイルに、emptyvalue パラメーターを使用します。以下を含むファイル data.csv を仮定します。

1,2,3,4,,6

7,8,9,,11,12

空の cell を埋めるために、NaN を使用してファイルを読み取ります。

data = textread('data.csv','','delimiter',',','emptyvalue',NaN)
data = 2×6

     1     2     3     4   NaN     6
     7     8     9   NaN    11    12

ファイル fft.m を文字ベクトルの cell 配列に読み取ります。

file = textread('badpoem.txt','%s','delimiter','\n','whitespace','')
file = 4x1 cell
    {'Oranges and lemons,'    }
    {'Pineapples and tea.'    }
    {'Orangutans and monkeys,'}
    {'Dragonflys or fleas.'   }

入力引数

すべて折りたたむ

ファイル名。文字ベクトルまたは string スカラーとして指定します。

形式。文字ベクトルまたは string スカラーとして指定します。この引数は、戻り引数の数とタイプを決定します。戻り引数の数は、format の内容によって示される項目数です。format は、C 言語の fscanf ルーチンの変換指定子および規則のサブセットをサポートしています。次の表は、format の値をまとめています。format 内の空白文字は無視されます。

形式

アクション

出力

リテラル

(通常の文字)

一致した文字を無視します。たとえば、ファイル内で Dept に数値 (部門番号) が続く場合、Dept をスキップして数値のみを読み取るには、書式指定子に 'Dept' を使用します。

なし

%d

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

double 配列

%u

整数値を読み込みます。

double 配列

%f

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

double 配列

%s

空白や区切り記号のあるテキストを読み取ります。

文字ベクトルの cell 配列

%q

二重引用符内のテキストを引用符を無視して読み取ります。

文字ベクトルの cell 配列

%c

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

文字配列

%[...]

大かっこの中に指定された文字を含む、最も長い文字のグループを読み取ります。

文字ベクトルの cell 配列

%[^...]

大かっこの中に指定されていない文字を含む、最も長い空でない文字のグループを読み取ります。

文字ベクトルの cell 配列

%*...
instead of %

* で指定される文字を無視する。

なし

%w...
instead of %

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

 

データの読み取り回数。正の整数として指定します。N がゼロより小さい場合、textread はファイル全体を読み取ります。

名前と値の引数

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

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

例: 'WriteMode','append'

文字ベクトルの最大長 (バイト単位)。正の整数として指定します。

関連する記号を基準とする文字の無視。'matlab''shell''c' または 'c++' として指定します。

動作

'matlab'

% の後の文字を無視します。

'shell'

# の後の文字を無視します。

'c'

/**/ の間の文字を無視します。

'c++'

// の後の文字を無視します。

要素間の区切り記号。1 つ以上の文字として指定します。textread は、連続している delimiter 値を読み取るときに、それぞれを個別の区切り記号として扱います。

区切り記号のあるファイルを読み取る場合に空の cell に与えられる値。double 型のスカラーとして指定します。

行の終了を示す文字。単一の文字または '\r\n' として指定します。

指数文字の指定。指数文字として指定します。

ヘッダーの行数。正の整数として指定します。

区切り記号のあるファイルを読み取る場合に空の cell に与えられる値。double 型のスカラーとして指定します。textread は連続する空白値を読み取る場合、1 つのまとまった空白として取り扱います。

whitespace を使用して、テキスト内の先頭と末尾の空白を保持できます。

textread('myfile.txt','%s','whitespace','')
ans = 
    '   An  example      of preserving    spaces      '

動作

' '

スペース

\b

バックスペース

\n

改行

\r

キャリッジ リターン

\t

水平タブ

バージョン履歴

R2006a より前に導入

すべて折りたたむ

R2012b: textread は非推奨

textread は推奨されません。代わりに textscan を使用してください。textread を削除する予定はありません。

関数 textscan を使用して、テキスト ファイルまたは string から書式付きデータを読み取ります。textscan を使用するワークフローには、関数 textread を使用する場合よりも優れた点がいくつかあります。

  • textread とは異なり、textscan によって提示される出力は cell 配列です。

  • textscan の呼び出し間でファイル ポインターが保持されるため、データを分割して読み取ることができます。

  • textscan ワークフローでは、リモートの場所からの読み取りがサポートされます。

  • textscan によって生成されるエラー メッセージから、構文とワークフローの調整方法を明確に把握できます。

次の表に、textread のいくつかの一般的な使用方法と、代わりに textscan を使用するようにコードを更新する方法を示します。

非推奨推奨
[date,level,x,y,answer] = textread('scan1.dat',...
    '%s %s %f %d %s',1)
filename = 'scan1.dat';
fileID = fopen(filename);
C = textscan(fileID,'%s %s %f %d %s');
fclose(fileID);
celldisp(C)
data = textread('data.csv','','delimiter',',',...
    'emptyvalue',NaN)
filename = 'data.csv';
fileID = fopen(filename);
C = textscan(fileID,'%f %f %f %f %u8 %f', ...
    'Delimiter',',','EmptyValue',NaN);
fclose(fileID);
celldisp(C)