2012-04-29 92 views
1

我編寫了一個代碼,用於從鑽孔數據中提取巖性深度信息。如何將多個單元格寫入文本文件

每個巖性有兩個深度:頂部深度和底部深度。他們是這樣的:

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

每種類型的巖性具有細胞的不同層面。

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

如何將這些信息寫入文本文件?

好像我可以使用dmwrite,但我有問題,形成了二維條碼,因爲每種類型的岩石有兩個深度。

這怎麼辦?

+0

您能澄清那些單元格元素實際上是*字符串*而不是*數字*嗎?我的答案假設他們是字符串。 – 2012-04-29 07:44:03

+0

嗨reve_etrange,每個單元格元素都是數字。其實,他們是字符串,無論如何,我可以使用str2double改變它們。問題是我有許多不同的單元陣列,如砂岩,泥岩,煤炭等。每個單元陣列有不同的尺寸,如砂岩單元陣列有12 * 2個單元。所以我想創建一個DataMatrix,然後使用dmwrite將這些單元格寫入文本文件。 – Lei 2012-04-29 15:56:28

回答

1

對於字符串的單元陣列,我使用下面的簡單的功能,其被放置在C:\Users\NAME\Documents\MATLAB\@cell或等效userpath平臺(~/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行結束,在第二fprintf調用替換 「\ n」 和 「\ n \ r」。如果你想要標籤,你也可以用「\ t」替換第一次調用中的「,」。

對於數字陣列可以使用附帶的MATLAB功能csvwrite

如果必須使用具有混合數據類型單元陣列,該函數必須被修改以接受的格式說明的陣列。

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',例如。基於這些實施例

可以編寫一個更復雜的函數,測試數據的類型在每個小區中,並構造一個格式字符串相匹配,如果你將不得不完全未知的數組的內容。

+0

嗨reve_etrange 感謝您的幫助!我剛看到你的答案。我會看看這個。這真的有幫助! – Lei 2012-04-29 15:24:36

相關問題