2

我之前询问过在 .txt 文件中包含矩阵和字符串。我现在需要将单元格附加到它。从我之前的问题:

str = 'This is the matrix: ';
mat1 = [23 46; 56 67];
fName = 'output.txt';
fid = fopen(fName, 'w');
if fid >= 0
    fprintf(fid, '%s\n', str);
    fclose(fid);
end
dlmwrite(fName, mat1, '-append', 'newline', 'pc', 'delimiter', '\t');

现在我想附加一个字符串:'删除的标识符是',然后是它下面的这个单元格数组:

'ABC' [10011] [2]
'DEF' [10023] [1] 

一些相关链接:

http://www.mathworks.com/help/techdoc/ref/fileformats.html,http://www.mathworks.com/support/solutions/en/data/1-1CCMDO/index.html?solution=1- _ _ 1CCMDO

4

2 回答 2

3

不幸的是,您不能使用DLMWRITECSVWRITE 之类的函数来写入数据元胞数组。但是,要获得所需的输出,您仍然可以使用对FPRINTF的单个调用,但您必须指定单元格数组行中所有条目的格式。在我对您之前的问题的回答的基础上,您将添加以下附加行:

str = 'The removed identifiers are: ';   %# Your new string
cMat = {'ABC' 10011 2; 'DEF' 10023 1};   %# Your cell array
fid = fopen(fName,'a');                  %# Open the file for appending
fprintf(fid,'%s\r\n',str);               %# Print the string
cMat = cMat.';                          %'# Transpose cMat
fprintf(fid,'%s\t%d\t%d\r\n',cMat{:});   %# Print the cell data
fclose(fid);                             %# Close the file

新文件内容(包括旧示例)将如下所示:

This is the matrix: 
23  46
56  67
The removed identifiers are: 
ABC 10011   2
DEF 10023   1
于 2010-12-30T18:39:54.770 回答
0

您可以使用File Exchange中的cellwrite。阅读来自Francis Barnhart的使用 MATLAB 编写混合数据,cellwrite 的创建者可能值得一看。

更改 cellwrite 的签名以接受文件句柄应该是一项可行的任务。允许将数据附加到已经存在的文件中。

于 2010-12-30T18:27:02.157 回答