一个同学咨询了一个问题,如何把matlab变量区的数据保存到csv文件里面,故此分享一下Matlab保存数据到csv文件的方法。csv其实也是一个txt,只不过csv是带特定格式的txt而已,举个例子,编辑一个txt文件,内容如下
把这个文件名后缀修改为csv,新建 文本文档.csv,则用excel打开
所以在matlab中保存为csv其实和保存为txt方法类似
1、方法1:table
代码语言:javascript复制%需要保存的矩阵
A=[1 2 3;4 5 6; 7 8 9];
%行名称
m=['m1';'m2';'m3'];
%列名称
col={'test' 'c_1', 'c_2', 'c_3'};
%生成表格,按列生成
result_table=table(m,A(:,1),A(:,2),A(:,3),'VariableNames',col);
%保存表格
writetable(result_table, 'test.csv');
采用把数据拼装为table类型,然后writetable
如果不需要设置表头这些,直接输入
代码语言:javascript复制result_table1=table(A)
writetable(result_table1, 'test1.csv');
但注意一下,writetable也会按照变量名称生成一个表头,这个暂未找到如何取消,懂得朋友可以私信我一下方法
2、fopen
csv格式是用逗号分隔数据的一种文件。一行之间的数据用逗号分隔,行与行之间用n分隔。用MATLAB将数据写入csv文件时,首先用fopen创建一个有写入权限的文件,然后用fprintf函数将数据逐一写入。不换行的数据用逗号分隔,换行时用n。
代码语言:javascript复制fid = fopen('test.csv', 'w ', 'n', 'utf8'); % 创建一个csv文件
for i=1:3
fprintf(fid, '%d,%d,%dn', A(i,1),A(i,2),A(i,3)); % 一行3个数据,用逗号分隔;每行结束后加上n换行
end
用fprint的方法就不存在方法1中自动生成表头的问题