【问题标题】:Adding a header to a matrix in Matlab在 Matlab 中向矩阵添加标题
【发布时间】:2011-10-28 05:53:05
【问题描述】:

我希望你们周二过得愉快。我意识到您不能将字符串标题添加到 MATLAB 中的数值矩阵。我正在尝试将标题添加到我当前拥有的矩阵中,并将其输出到制表符分隔的文本文件中。根据我的研究,我知道必须将矩阵转换为单元格,但我无法使用 dlmwrite 保存单元格。

这是我目前拥有的矩阵:

  0         0         0
0.0454    0.0105    0.0105
0.0907    0.0066    0.0068
0.1814    0.0038    0.0049
0.3629    0.0034    0.0040
0.7258    0.0029    0.0023
1.4515    0.0002    0.0007
2.9030    0.0003    0.0005

这就是我想要的:

 tau     TOL Adev  FOL Adev
0.0454    0.0105    0.0105
0.0907    0.0066    0.0068
0.1814    0.0038    0.0049
0.3629    0.0034    0.0040
0.7258    0.0029    0.0023
1.4515    0.0002    0.0007
2.9030    0.0003    0.0005

矩阵(3, 7,第一行为零)称为 saveData。

我尝试分配 header = ['tau', 'TOL Adev', 'FOL Adev'];和输出 = {header;saveData};但我不知道如何使用 dlmwrite('filename', output, '\t')。

非常感谢您的帮助! -亚历克斯

【问题讨论】:

  • @Amro,我能够用它来解决我的大部分问题。但是,我仍然有一个非常简单的问题。在您的链接中,使用了 dlmwrite('outputData',saveData, '-append') 。不幸的是,这会创建一个逗号分隔的文件。我知道'\t' 是用于指定制表符分隔的字符串,但我不能使用它,因为正在使用'-append'。你有什么建议吗?
  • @Alex Nichols - DLMWRITE 允许在“-append”参数之后使用属性/值对,您可以使用它们来定义分隔符,例如dlmwrite('outputData', saveData, '-append', 'delimiter', '\t').

标签: matlab printing matrix cell


【解决方案1】:

首先,此代码 (header = ['tau', 'TOL Adev', 'FOL Adev'];) 将连接您的字符串,因此请使用单元格。

@Amro 代码很好,但是如果你想让输出漂亮(就像例子中的那样),你需要自己做,比如这个函数:

function writeWithHeader(fname,header,data)
% Write data with headers
%
% fname: filename
% header: cell of row titles
% data: matrix of data

f = fopen(fname,'w');

%Write the header:
fprintf(f,'%-10s\t',header{1:end-1});
fprintf(f,'%-10s\n',header{end});

%Write the data:
for m = 1:size(data,1)
    fprintf(f,'%-10.4f\t',data(m,1:end-1));
    fprintf(f,'%-10.4f\n',data(m,end));
end

fclose(f);

您只需要使用 fprintf 格式字符串...

【讨论】:

    【解决方案2】:

    如果你比较懒,而且你的矩阵不是太大,你可以把你的数据做成一个数据集,然后导出。如果您的矩阵很大,我建议您查看 Amro 提供的链接。注意数据集是统计工具箱中的一个函数。

    ds = dataset({rand(10,3) 'a' 'b' 'c'})
    export(ds, 'file', 'foo.txt', 'delim', '\t');
    

    【讨论】:

    • 效果很好。我的矩阵非常小(7,3),我想我感觉很懒! :P 谢谢,-亚历克斯
    猜你喜欢
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多