textread
(非推奨) テキスト ファイルからデータを読み取り、複数の出力へ書き込み
textread
は推奨されません。代わりに textscan
を使用してください。詳細については、互換性についての考慮事項を参照してください。
構文
説明
[Var1,Var2,...,VarN] = textread(
は、ファイル全体を読み取るまで、指定した書式を使ってファイル filename
,format
)filename
から変数 [Var1,Var2,...,VarN]
にデータを読み取ります。textread
は、既知の書式をもつテキスト ファイルの読み取りに有用です。textread
は、固定書式ファイルと自由書式ファイルの両方を取り扱います。
関数 textread
は、入力から文字群を一致させ、変換します。各入力フィールドは、空白文字以外の文字のグループとして定義され、次の空白や区切り記号、最大フィールド幅のいずれかまで拡張します。繰り返される区切り記号は有意ですが、繰り返される空白文字は 1 つのものとして扱われます。
[Var1,Var2,...,VarN] = textread(___,
は、前述の構文の入力引数のいずれかに加え、1 つ以上の Name,Value
)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'}
空の cell を埋めるために値を指定する
空のセルをもつファイルに、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
ファイルを文字ベクトルの cell 配列に読み取る
ファイル 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.' }
入力引数
filename
— ファイル名
文字ベクトル | string スカラー
ファイル名。文字ベクトルまたは string スカラーとして指定します。
format
— 形式
文字ベクトル | string スカラー
形式。文字ベクトルまたは string スカラーとして指定します。この引数は、戻り引数の数とタイプを決定します。戻り引数の数は、format
の内容によって示される項目数です。format
は、C 言語の fscanf
ルーチンの変換指定子および規則のサブセットをサポートしています。次の表は、format
の値をまとめています。format
内の空白文字は無視されます。
形式 | アクション | 出力 |
---|---|---|
リテラル (通常の文字) | 一致した文字を無視します。たとえば、ファイル内で | なし |
%d | 符号付き整数値を読み込みます。 | double 配列 |
%u | 整数値を読み込みます。 | double 配列 |
%f | 浮動小数点値を読み込みます。 | double 配列 |
%s | 空白や区切り記号のあるテキストを読み取ります。 | 文字ベクトルの cell 配列 |
%q | 二重引用符内のテキストを引用符を無視して読み取ります。 | 文字ベクトルの cell 配列 |
%c | 空白を含む文字を読み込みます。 | 文字配列 |
%[...] | 大かっこの中に指定された文字を含む、最も長い文字のグループを読み取ります。 | 文字ベクトルの cell 配列 |
%[^...] | 大かっこの中に指定されていない文字を含む、最も長い空でない文字のグループを読み取ります。 | 文字ベクトルの cell 配列 |
%*... |
| なし |
%w... |
|
N
— データの読み取り回数
正の整数
データの読み取り回数。正の整数として指定します。N がゼロより小さい場合、textread
はファイル全体を読み取ります。
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name
を引用符で囲みます。
例: 'WriteMode','append'
bufsize
— 文字ベクトルの最大長
4095 (既定値) | 正の整数
文字ベクトルの最大長 (バイト単位)。正の整数として指定します。
commentstyle
— 関連する記号を基準とする文字の無視
'matlab' | 'shell' | 'c' | 'c++'
関連する記号を基準とする文字の無視。'matlab'
、'shell'
、'c'
または 'c++'
として指定します。
値 | 動作 | |
---|---|---|
'matlab' |
| |
'shell' |
| |
'c' |
| |
'c++' |
|
delimiter
— 要素間の区切り記号
1 つ以上の文字
要素間の区切り記号。1 つ以上の文字として指定します。textread
は、連続している delimiter
値を読み取るときに、それぞれを個別の区切り記号として扱います。
emptyvalue
— 空の cell に与えられる値
0 (既定値) | double 型のスカラー
区切り記号のあるファイルを読み取る場合に空の cell に与えられる値。double 型のスカラーとして指定します。
endofline
— 行の終了を示す文字
ファイルから決定 (既定値) | 単一の文字 | '\r\n'
行の終了を示す文字。単一の文字または '\r\n'
として指定します。
exchars
— 指数文字
'eEdD'
(既定値) | 指数文字
指数文字の指定。指数文字として指定します。
headerlines
— ヘッダーの行数
正の整数
ヘッダーの行数。正の整数として指定します。
whitespace
— 空白文字として扱う文字のベクトル
' \b\t'
(既定値) | ' '
| \b
| \n
| \r
| \t
区切り記号のあるファイルを読み取る場合に空の 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) |
参考
textscan
| fopen
| readmatrix
| fscanf
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)