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,但我在形成数据矩阵时遇到了问题,因为每种类型的岩石都有两个深度。

如何才能做到这一点?

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

fprintf如果您需要传统的 Windows/DOS 行结尾,请在第二次调用中将“\n”替换为“\n\r” 。如果您需要制表符,您也可以在第一次调用中将“,”替换为“\t”。

对于数值数组,您可以使用csvwriteMATLAB 附带的函数。

如果您必须使用具有混合数据类型的元胞数组,则必须修改函数以接受格式说明符的数组。

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 回答