在Matlab中用逗号分隔字符串

时间:2012-05-12 17:26:17

标签: matlab csv comma data-processing

我希望在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

To This:

0.3,
0.1,
0.5,
etc,

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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)