ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

dlmread

数値データの ASCII 区切りファイルを行列に読み込む

構文

M = dlmread(filename)
M = dlmread(filename, delimiter)
M = dlmread(filename, delimiter, R, C)
M = dlmread(filename, delimiter, range)

説明

M = dlmread(filename) は、ASCII 区切り数値データ ファイル filename を読み込み、出力行列 M に出力します。filename の入力は、単一引用符で囲まれる文字列です。dlmread はファイルの形式から区切り記号を推測します。

M = dlmread(filename, delimiter) は、指定された delimiter を使ってファイルからデータを読み取ります。'\t' を使用して、タグ区切り記号を指定します。

M = dlmread(filename, delimiter, R, C) は、左上隅がファイル内の行 RC 列にあるデータを読み取ります。値 RC はゼロを基準としているので、R=0C=0 はファイルの最初の値を指定します。

M = dlmread(filename, delimiter, range) は、range = [R1 C1 R2 C2] で指定された範囲を読み取ります。ここで、(R1,C1) は読み取られるデータの左上隅で、(R2,C2) は右下隅です。また、range = 'A1..B7' のように、スプレッドシート表記法を使用して範囲を指定することもできます。

例 1

5 行 8 列のテスト行列 M をファイルにエクスポートし、これを関数 dlmread を使用して、filename 以外の引数を指定せずに読み込みます。

M = gallery('integerdata', 100, [5 8], 0); 
dlmwrite('myfile.txt', M, 'delimiter', '\t')

dlmread('myfile.txt')
ans =
    96    77    62    41     6    21     2    42
    24    46    80    94    36    20    75    85
    61     2    93    92    82    61    45    53
    49    83    74    42     1    28    94    21
    90    45    18    90    14    20    47    68

ここで、左上隅の行および列を指定して、行列の一部を読み込みます。

dlmread('myfile.txt', '\t', 2, 3)
ans =
    92    82    61    45    53
    42     1    28    94    21
    90    14    20    47    68

次は、範囲指定子を使用して、行列の別の部分を読み込みます。

dlmread('myfile.txt', '\t', 'C1..G4')
ans =
    62    41     6    21     2
    80    94    36    20    75
    93    92    82    61    45
    74    42     1    28    94

例 2

行列 M をファイルにエクスポートして、最初の行の 1 行下の行に別の行列を追加します。

M = magic(3);
dlmwrite('myfile.txt', [M*5 M/5], ' ')

dlmwrite('myfile.txt', [M/3], '-append', ...
   'roffset', 1, 'delimiter', ' ')

type myfile.txt

40 5 30 1.6 0.2 1.2
15 25 35 0.6 1 1.4
20 45 10 0.8 1.8 0.4
  
2.6667 0.33333 2
1 1.6667 2.3333
1.3333 3 0.66667

関数 dlmread がこれらの 2 つの行列をファイルからインポートすると、小さい方の行列がゼロでパディングされます。

dlmread('myfile.txt')
   40.0000    5.0000   30.0000    1.6000    0.2000    1.2000
   15.0000   25.0000   35.0000    0.6000    1.0000    1.4000
   20.0000   45.0000   10.0000    0.8000    1.8000    0.4000
    2.6667    0.3333    2.0000         0         0         0
    1.0000    1.6667    2.3333         0         0         0
    1.3333    3.0000    0.6667         0         0         0

詳細

すべて折りたたむ

ヒント

  • 入力ファイル内のすべてのデータは、数値でなければなりません。dlmread は、指定した行と列が数値データのみを含む場合でも、非数値データを含むファイルを読み取りません。

  • dlmread がファイルの形式から区切り記号を推測する場合、繰り返される空白は 1 つの区切り記号として扱われます。これとは対照的に、dlmread に対して区切り記号を指定すると、繰り返される空白は個別の区切り記号として扱われます。

  • RC、または range 入力を指定して、delimiter を指定しない場合、delimiter 引数を空の文字列 (''、空白を含まない 2 つの連続する単一引用符) に設定します。たとえば以下のようになります。

    M = dlmread('myfile.dat', '', 5, 2)

    この場合、dlmread は繰り返される空白を単一の区切り記号として扱います。

  • 関数 dlmread は、空の区切りフィールドをゼロで埋めます。各行の末尾に空白以外の区切り記号 (セミコロンなど) がある場合、出力行列の最後にゼロが格納された列が追加されます。

  • dlmread は複素数フィールドに対して複素数を整数としてインポートします。複素数の有効な形式は、以下のようになります。

    ±<real>±<imag>i|j

    例: 5.7-3.1i

    ±<imag>i|j

    例: -7j

    複素数に組み込まれた空白は無効になり、フィールドの区切り記号と見なされます。

この情報は役に立ちましたか?