在Matlab中创建一个简单的表

时间:2013-04-15 13:25:57

标签: matlab printf

我已经和fprintf争战了一个小时了,应该很容易,但事实并非如此。 有一个名为datasave的描述性统计数据的向量,包含9个数字,如平均数,标准开发数,峰度数等。

我有一个矢量datalabels,其中包括'平均','St.dev','Kurt'等。

使用fileopen打开文件 打印标签
新线
打印值(正好在标签下!)
关闭文件

这是我到目前为止所尝试的:

fileID = fopen('descstat2.txt','w'); 
fprintf(fileID,'MediaTonnes MinTonnes MaxTonnes Sigma Skew Kurt SigmadTonnes SkewdTonnes KurtdTonnes\r\n');
format short;
fprintf(fileID, '%g\t%g\t%g\n', datasave.');

帮助?

我至少有50种不同的组合,所以我无法真正给你输出......

2 个答案:

答案 0 :(得分:1)

也许试试这个:

fileID = fopen('descstat2.txt','w'); 
fprintf(fileID,'%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\r\n', datalabels);
fprintf(fileID, '%g\t%g\t%g\t%g\t%g\t%g\t%g\t%g\t%g\r\n', datasave);
fclose

答案 1 :(得分:1)

要使用XLSWRITE,您需要创建一个单元格数组:

out = [datalabels(:)'; num2cell(datasave)];
xlswrite('descstat2', out)

如果您要保存的文件作为文本文件存在,xlswrite也会将其另存为文本。

它可能会慢fprintf(由于COM接口),但您不必处理格式化输出。只需将所有内容转换为单元格。


另一个选择是使用统计工具箱中的TBLWRITE。你可以这样做:

tblwrite(datasave, datalabels, [], filename, '\t')

它还会将行号或标签指定为第3个参数。对某些数据可能有用。