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 つの深さがあるため、datamatrix を作成するのに問題があります。

これはどのように行うことができますか?

4

1 に答える 1

1

文字列のセル配列には、次の単純な関数を使用します。これはC:\Users\NAME\Documents\MATLAB\@cell、プラットフォーム()のまたは同等のユーザーパスに配置されます~/Documents/MATLAB/@cell。この@cell名前は、MATLAB内の関数@cellがセル配列でのみ使用されることを通知します。

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);

従来のWindows/DOS行末が必要な場合は、2回目のfprintf呼び出しで「\n」を「\n\r」に置き換えます。タブが必要な場合は、最初の呼び出しで「、」を「\t」に置き換えることもできます。

数値配列の場合csvwrite、MATLABに含まれている関数を使用できます。

混合データ型のセル配列を使用する必要がある場合は、フォーマット指定子の配列を受け入れるように関数を変更する必要があります。

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);

次のような行を持つ配列の場合、たとえば、{ 1 3 5 'string1' string2' }を使用spec = '%d,%d,%s,%s'します。

これらの例に基づいて、各セルのデータの型をテストし、配列の内容が完全に不明な場合に一致するフォーマット文字列を作成する、より高度な関数を作成できます。

于 2012-04-29T07:33:48.553 に答える