2012-04-03 13 views
1

ここでは、.datファイルのデータを共有しています。私は16162種類のファイルを持っています。私は1つのファイルにすべてをマージし、MATLABでそれを読んで、1つのファイルから3つのパラメータの値を抽出し、どちらかの行または賢明ないずれかでそれらを配置する必要があります。私はCのシャープコードを使用してそれを行うことができますが、私はそれをmatlabを使用して行いたいです。誰でもコードを書いてくれて助けてくれますか?ここmatlabの.datファイルからテキストと数値データを読み取る

は、一つのサンプル・ファイル・データである:

DISTRIBUTION:対数正規単峰 N:1.000 r_mod:0.010 シグマ:1.400

番号濃塩酸を、表面。 conc。、volume conc。 (cm^-3)(mu^2cm^-3)(mu^3cm^-3) 1087e + 01。1866e-027878e-05

部分です。 ave。半径、サーフ。 ave。半径、vol。 ave。半径: .1149E-01 .1169E-01 .1201E-01

面が半径平均、体積は半径を意味する: .1267E-01 .1392E-01

EFF。分散: .9939E-01

たとえば、3つのパラメータ(r_mod、sigma、Surfaceは半径を意味します)を抽出または読み込みたいとします。

r_mod sigma surface mean radius 
.01  1.4  1.27E-02 
.02  1.4  2.67E-02 
.03  1.4  3.98E-02 
...  ..   .. .. 
..  ..   .. .. 

私はより多くを持っている:私は、このページに入れたファイルからこれらの三つのパラメータに対応する値は、.1267E-01

出力があるべき(私はしたい)1.400 0.010であります何千もの類似したファイルが同じディレクトリにあります。私は、MATLABでそれらのファイルをすべて読み込み、出力はこのように1つのファイルに表示されるはずです。

答えて

1

数値を除いてすべてのファイルが厳密に同じ場合は、Matlab関数textscanを使用して各行の形式を指定できます。ここで

は、あなたがそれを行うことができる方法の例です:

fid=fopen('text.dat','r'); 
format={'DISTRIBUTION: monomodal log-normal n : %f r_mod: %f sigma: %f'; ... 
     'number conc., surface. conc., volume conc. (cm^-3) (mu^2cm^-3) (mu^3cm^-3) %f %f %f'; ... 
     'part. ave. radius, surf. ave. radius, vol. ave. radius : %f %f %f'; ... 
     'surface mean radius, volume mean radius : %f %f'; ... 
     'eff. variance : %f'}; 
data=cell(numel(format),1); 
for i=1:numel(format) 
    data{i}=textscan(fid,format{i},1); 
end 
fclose(fid); 

この例では、セル配列dataの数値にアクセスすることができ、r_modはdata{1}{2}で、シグマはdata{1}{3}し、表面は半径があることを意味しdata{4}{1}等々。次に、これらのデータを整理し、ヘッダを書き込むためにfprintfを使用し、データを追加するためにdlmwriteを使用して、コレクションにファイルを保存することのみが問題です。

+0

こんにちは、Aabaz。コードと説明をありがとうございます。 – mmenvo

関連する問題