0

我正在寻找在 Matlab 中用逗号分隔文本文件中的字符串,到目前为止,我已经使用了“csvwrite”和“dlmwrite”。

他们通常采用这种形式:

myFile - input ('Please enter file's directory','s');
readMatrix - csvread(myFile);
csvwrite('newdatafile.dat', readMatrix);

为了澄清,我想要做的是:

打开一个如下所示的文本文件:

0.3
0.1
0.5
etc

对此:

0.3,
0.1,
0.5,
etc,
4

2 回答 2

0

MATLAB 的 csvwrite 函数将矩阵数据写入以逗号分隔的文件。不幸的是,MATLAB 中的字符串没有自己单独的数据类型,并且也表示为矩阵,因此当您在它们上运行 csvwrite 时,它​​们会将每个字母视为一个元素并在每个字母之间放置一个逗号。

您有两个选择:将输入存储为双精度并在其上运行 csvwrite,或者使用更原始的函数将它们输出到文件(sprintf 后跟 fprintf 到文件句柄)。

于 2012-05-12T17:46:20.533 回答
0

为什么行尾需要逗号? csvread也适用于行包含逗号分隔数字的文件,即:

file1.dat:
02, 04, 06, 08, 10, 12
03, 06, 09, 12, 15, 18
05, 10, 15, 20, 25, 30
07, 14, 21, 28, 35, 42
11, 22, 33, 44, 55, 66


--and then in matlab:
readMatrix = csvread('file1.dat')

将读取文件并导致size(readMatrix) = [5 6](尽管每行末尾缺少逗号)如果文件仅包含一列数字(因此没有逗号),同样适用。

但是,如果您确实需要逗号,则可以使用fprintf读取数据并将其打印到文件中:

readMatrix = csvread('file1.dat');
fid=fopen('file1withcommas.dat','w');
for ii=1:size(readMatrix,1)
    fprintf(fid,'%g,\n',readMatrix(ii,:));
end
fclose(fid)
于 2012-05-12T17:47:39.357 回答