好的,来自Python并且之前从未使用过MATLAB,似乎使用MATLAB将数据写入csv是不必要的......
所以我的数据看起来像这样:
col1 A2A B2 CC3 D5
asd189 123 33 71119 18291
as33d 1311 31 NaN 1011
asd189 NaN 44 79 191
它有N个标题列,由字母数字字符串组成。 它有一个长度为M的最左边的列,它由字母数字字符串组成。 它有一个(M-1)x(N-1)个NUMERIC数据数组,可能有NaN。
您能否提供代码将其写入csv?我不能使用xlswrite函数,因为我在没有安装Excel的集群上。真的只想继续进行实际的数据分析。感谢
答案 0 :(得分:0)
您只能使用csvwrite
直接编写矩阵(不是单元格数组),正如您所说的那样,您需要为xlswrite
安装Excel,这样您才能进行低级操作。您可以看到用于写入文本文件here的演练,以及下面示例的代码:
% Initialise example cell array
M = {'col1', 'A2A', 'B2', 'CC3', 'D5'
'asd189', 123, 33, 71119, 18291
'as33d', 1311, 31, NaN, 1011
'asd189', NaN, 44, 79, 191};
% Open a file for writing to (doesn't have to already exist, can specify full directory)
fID = fopen('test.csv','w');
% Write header line, formatted as strings with comma delimiter. Note \r\n for new line
fprintf(fID, [repmat('%s, ', 1, size(M,2)-1),'%s\r\n'], M{1,:});
% Loop through other rows
for row = 2:size(M,1)
% Write each line of cell array, with first column formatted as string
% and other columns formatted as floats
fprintf(fID, ['%s, ', repmat('%f, ', 1, size(M,2)-2),'%f\r\n'], M{row,:});
end
% Close file after writing
fclose(fID);
结果:
答案 1 :(得分:0)
使用writetable
。它使写入CSV(或Excel文件或其他文本分隔文件格式)比使用csvwrite
或xlswrite
或低级命令(如fprintf
)更容易
>> t = table({'asd189';'as33d';'asd189'},[123;1311;NaN],[33;31;44],[71119;NaN;79],[18291;1011;191]);
>> t.Properties.VariableNames = {'col1','A2A','B2','CC3','D5'}
t =
col1 A2A B2 CC3 D5
________ ____ __ _____ _____
'asd189' 123 33 71119 18291
'as33d' 1311 31 NaN 1011
'asd189' NaN 44 79 191
>> writetable(t,'myfile.csv')
如果您的数据当前未存储为表格(可能是数组或单元格数组),则使用array2table
等实用程序功能很容易转换为表格或cell2table
。这样做只会支付一小笔时间。
PS - 您不需要安装Excel即可写入Excel文件。之后您可能无法读取它们,但MATLAB仍然可以编写它们。但听起来你还是喜欢.csv。