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',',',','
対応する文は次のとおりです.
filename = '.\myfile.txt';
%*fはtextreadに浮動小数点数をスキップするように伝えます.4.2 Levelを無視する場合は、後ろの数字を読み取ることを指します.
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 , 。
----------------------------------------------------------------------------------------------------------------