MATLAB小技:テキストデータのN行目から読み取る

4925 ワード

http://www.eetop.cn/blog/html/03/6503-23236.html
ocnprintでCadenceからエクスポートされたテキストデータの最初の行に白が残るため、多くの人が紹介している方法は、前の空白や空白、文字を手動で削除することです.個人的には面倒だと思います.
実はMATLABでtextreadコマンドでN行目からのデータの読み出しを制御できる場合.例えば出力元データは、1行目が空白データ、2行目がデータ名、3行目が空白行、有用データは4行目から、以下のようになります.               getData("P2:id    getData("P2:gm    getData("P2:gd    getData("P2:vt   0.00000e+00      -2.02811e-14       2.35844e-13       1.23904e-14      -8.09185e-01   ----------------------------------------------------------------------------------------------------------------
これらのデータは、d=textread('nmos_vgs.dat',','headerlines',2)の文で読み込むことができます.  %データを読み込むときに最初の2行をスキップすることを意味します.または、d=textread('nmos_vgs.dat',','headerlines',3)  %データを読み込むときに最初の3行をスキップすることを意味します.(これはtextreadコマンドがデータ段落の空白行を自動的にスキップできるように説明します?)
ついでにネット上のtextreadコマンドについて詳しく説明します.------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=textread(filename,format,N)filenameはファイル名、formatは読み込むフォーマット、A,B,Cはファイルから読み取ったデータです.括弧の中の変数の個数はformatで定義した個数と同じでなければなりません.N行ごとに同じフォーマットのデータがあれば[A,B,C,...]=textread(filename,format,N)例1:myfile.txtの内容は以下の通りである:1 2 3 4 5 6 6 6 7 7 7 8 9 10 11 12対応する文はfilename='.myfile.txt';[data 1,data 2,data 3,data 4]=textread(filename,'%n%n%n%n%n');またはfilename='.myfile e.txt';[data 1,data 2,data 3,data 4]=textread(filename,'%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%%n',3);例2:myfile.txtの内容は以下の通りである:1,2,3,4 5,6,7,8 9,10,11,12対応する文は、filename='.myfile.txt';[data 1,data 2,data 3,data 4]=textread(filename,'%n%n','delimiter',',',');ここでdelimiterは区切り記号を示し、データを読むときに自動的に区切り記号をスキップします.例3:myfile.txtの内容は以下の通りです:%this a comment 1,2,3,4 5,6,7,8 9,10,11,12対応する文はfilename='.myfile.txt';[data 1,data 2,data 3,data 4]=textread(filename,'%n%n%n','delimiter',',',','headerlines'1);ここでtextreadは最初の1行をスキップし、1はスキップする行数に置き換えることができます.例4:myfile.txtの内容は以下の通りです.
Sally Level1 12.34 45 Yes

対応する文は次のとおりです.
filename = '.\myfile.txt';
[names, types, x, y, answer] = textread(filename , '%s %s %f %d %s', 1)
 
4.1     12.34     。
[names, types, y, answer] = textread(filename , '%s %s %*f %d %s', 1) 
 

%*fはtextreadに浮動小数点数をスキップするように伝えます.4.2 Levelを無視する場合は、後ろの数字を読み取ることを指します.
[names, levelnum, x, y, answer] = textread(filename , ... '%s Level%d %f %d %s', 1)
 
 
  5:myfile.txt        
1,2,3,4,,6 
7,8,9,,11,12
 
  nan       。
    :
data = textread('myfile.txt', 'delimiter', ',', 'emptyvalue', NaN);
 
 
  6: myfile.txt         
 Sally    Type1 12.34 45 Yes
 Joe      Type2 23.54 60 No
 Bill     Type1 34.90 12 No
 
        ,     
filename = '.\myfile.txt';
[names]=textread(filename,'%s%*[^
]')  %[^...] - reads characters not matching characters between the brackets until first matching character  %[^
] 。 %*[^
] 。 [names,rest]=textread(filename,'%s%[^
]') 7: myfile.txt                  Location;date;discharge Lobith;1989-01-01;00:00;2801 Lobith;1989-01-02;00:00;2619 : [Location,... % 1     yyyy              ,... % 2a datestring year     mm                ,... % 2b datestring month     dd                ,... % 2c datestring day     HH                ,... % 3a timestring hour     MM                ,... % 3b timestring minute     discharge] =  ...     textread(filename,'%s%f-%f-%f%f:%f%f',...         'headerlines',1,...         'delimiter'  ,';'); : textread fopen , txt 。textread , textread , 。    ----------------------------------------------------------------------------------------------------------------