我希望在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,
答案 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)