String 如何在MATLAB中将字符串和矩阵写入.txt文件?

String 如何在MATLAB中将字符串和矩阵写入.txt文件?,string,matlab,matrix,file-io,text-files,String,Matlab,Matrix,File Io,Text Files,我需要将数据写入MATLAB中的.txt文件。我知道如何写字符串(fprintf)或矩阵(dlmwrite),但我需要一些既能写字符串又能写矩阵的东西。下面我举一个例子: str = 'This is the matrix: ' ; mat1 = [23 46 ; 56 67] ; %fName if *fid is valid* fprintf(fid, '%s\n', str) fclose(fid) end dlmwrite(fName, *emptymatrix*, '

我需要将数据写入MATLAB中的.txt文件。我知道如何写字符串(
fprintf
)或矩阵(
dlmwrite
),但我需要一些既能写字符串又能写矩阵的东西。下面我举一个例子:

str = 'This is the matrix: ' ;
mat1 = [23 46 ; 56 67] ;
%fName
if *fid is valid* 
    fprintf(fid, '%s\n', str)
    fclose(fid)
end
dlmwrite(fName, *emptymatrix*, '-append', 'delimiter', '\t', 'newline','pc')
dlmwrite(fName, mat1, '-append', 'newline', 'pc')
这没问题,但有个问题。文件的第一行是:

This is the matrix: 23,46
这不是我想要的。我想看看:

This is the matrix:
23 46
56 67

我怎样才能解决这个问题?我不能使用for循环和
printf
解决方案,因为数据量很大,时间也是一个问题。

我认为解决问题所需做的就是在语句中添加回车符(
\r
),并删除对以下内容的第一次调用:

文件中的输出如下所示(数字之间有制表符):



注意:一个简短的解释。。。语句中需要
\r
的原因是,PC行终止符由一个回车符和一个换行符组成,当指定
'newline','PC'
选项时,会使用换行符。在记事本中打开输出文本文件时,需要使用
\r
来确保矩阵的第一行出现在新行上。

您有两个dlmwrite()调用,第一个调用在空矩阵上,第二个调用缺少“delimiter”选项。如果将其添加到第二个调用中会发生什么情况?

您不需要空矩阵调用。请尝试以下代码:

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

我遇到了类似的情况,在csv中添加了一个标题。通过将分隔符设置为
'
,可以使用dlmwrite with-append添加一行,如下所示

str = 'This is the matrix: ';      %# A string
mat1 = [23 46; 56 67];             %# A 2-by-2 matrix
fName = 'str_and_mat.txt';         %# A file name
header1 = 'A, B'
dlmwrite(fName, str, 'delimiter', '')
dlmwrite(fName, header1, '-append', 'delimiter', '')
dlmwrite(fName, mat1, '-append','delimiter', ',')
这将产生以下结果:

This is the matrix: 
A, B
23,46
56,67

谢谢你!你又帮我了!我有一个相关的问题:代码在我的系统上正常工作。但当我将桌面远程连接到服务器并将其Matlab路径设置到本地Matlab目录时,同样的代码无法设置文件。整个项目运行正常,但文件过程失败。有什么评论吗?Thankspathstr='C:/Documents and Settings/xxx/My Documents/MATLAB/Factor Production/Results/xxx';当我在本地执行此路径时,它工作正常。但是,当我使用服务器并运行同一组文件(通过设置路径)时,这会失败。我得到错误“没有这样的文件或目录”。消息来自代码行:[fid,message]=fopen(fName,'w');谢谢我只是将结果输出到另一台服务器。它很好地达到了目的!谢谢你的帮助。
str = 'This is the matrix: ';      %# A string
mat1 = [23 46; 56 67];             %# A 2-by-2 matrix
fName = 'str_and_mat.txt';         %# A file name
header1 = 'A, B'
dlmwrite(fName, str, 'delimiter', '')
dlmwrite(fName, header1, '-append', 'delimiter', '')
dlmwrite(fName, mat1, '-append','delimiter', ',')
This is the matrix: 
A, B
23,46
56,67