2012-04-29 12 views
1

ボアホールのデータから岩質深度情報を抽出するコードを書きました。多くのセルをテキストファイルに書き込む方法

それぞれの岩質は、深さと深さの2つの深さを持っています。これらは次のようになります。

Sandstone '830.212' '828.222' 
Siltstone '832.612' '830.922' 

各タイプのリソグラフィは、セルの寸法が異なります。

sandstone 12*2 cell 
coal 1*2 cell 
mudstone 14*2 cell etc. 

これらの情報をテキストファイルに書き込むにはどうすればよいですか?

私はdmwriteを使うことができたようですが、それぞれのタイプの岩が2つの深さを持つため、データマトリックスを形成するのに問題があります。

どうすればいいですか?

+0

これらのセル要素が* numbers *ではなく*実際に文字列*であることを明確にすることはできますか?私の答えは文字列であると仮定しています。 –

+0

こんにちはreve_etrange、各セルの要素は数字です。実際には、それらは文字列です、とにかく、私はstr2doubleを使用して変更することができます。私は、砂岩、泥岩、石炭などのような多くの異なるセル配列を持っていることです。そして、各セル配列は、砂岩セルアレイが12 * 2セルを持つような異なる次元を持っています。だから私はDataMatrixを作成してからdmwriteを使ってそれらのセルをテキストファイルに書き込むことを考えていました。 – Lei

答えて

1

文字列のセル配列の場合、私はC:\Users\NAME\Documents\MATLAB\@cellまたはそれに相当するユーザーパス(~/Documents/MATLAB/@cell)に配置された次の単純な関数を使用します。 @cellという名前は、@cell内の関数がセル配列のみで使用されることをMATLABに通知します。あなたが従来のWindows/DOSの改行コードが必要な場合は

function csvwrite(fileName,cellArray) 

fid = fopen(fileName,'w'); 
for i=1:size(cellArray,1) 
    fprintf(fid,'%s,',cellArray{i,1:end-1}); 
    fprintf(fid,'%s\n',cellArray{i,end}); 
end 
fclose(fid); 

は、第二fprintf呼び出しで "\ n個の\ rを" と "\ n" を交換してください。タブが必要な場合は、最初の通話の「、」を「\ t」に置き換えることもできます。

数値配列の場合は、MATLABに付属のcsvwrite関数を使用できます。

データ型が混在するセル配列を使用する必要がある場合は、フォーマット指定子の配列を受け入れるように関数を変更する必要があります。 { 1 3 5 'string1' string2' }あなたはたとえば、spec = '%d,%d,%s,%s'を使用しますと類似した行と列の場合

function csvwrite(fileName,cellArray,spec) 

fid = fopen(fileName,'w'); 
for i=1:size(cellArray,1) 
    fprintf([spec '\n'],cellArray{i,1:end}); 
end 
fclose(fid); 

これらの例に基づいて、完全に未知の配列内容がある場合に備えて、各セルのデータの型をテストし、一致する書式文字列を構成するより洗練された関数を書くことができます。

+0

こんにちはreve_etrange あなたの助けてくれてありがとう!私はちょうどあなたの答えを見ました。これを見てみましょう。これは本当に役立ちます! – Lei

関連する問題