为什么dlmwrite会消除矩阵的colnames?

时间:2016-06-28 09:34:42

标签: matlab matrix

林' Matlab中的新内容。我有这样的双矩阵M:

 3.4452e-10       3.727e-10
 5.3276e-11      5.4956e-11
-4.5277e-12     -1.5932e-10
 9.5572e-11     -2.9293e-11
 4.8192e-11     -7.5237e-11
-1.0847e-10      3.5613e-11

并为数据命名columane名称如下

 dataset({M, 'A','B'})
then I write it to folder using 
 dlmwrite('MyNewfile',M)

但是当我打开MyNewfile时,我看到矩阵的列名被删除了。 当我在目录中写入列名时,有谁知道如何保留列名?

2 个答案:

答案 0 :(得分:1)

首先,不推荐dataset,您应该使用table

其次,来自Matlab文档:

  

dlmwrite(filename,M)将数组M中的数字数据写入ASCII格式   文件

因此它只会写入矩阵的内容,而不会写出任何非数字数据。

您始终可以先使用写入文件中的列标题,然后附加数据,或使用另一个处理文本和数字数据的matlab编写函数

答案 1 :(得分:0)

让我们考虑一下你正在尝试将A写入文件有两种方法

A =

   1.0e-09 *

    0.3445    0.3727
    0.0533    0.0550
   -0.0045   -0.1593
    0.0956   -0.0293
    0.0482   -0.0752
   -0.1085    0.0356

要么将行名称附加到像这样的文件

>> dlmwrite('testtext3.txt',['A             B'] ,'delimiter','')
>> dlmwrite('testtext3.txt',[A],'-append','delimiter','\t','roffset',1)

或您将A转换为表格

T =array2table(A,'VariableNames',{'A' ,'B'})

T = 

         A              B     
    ___________    ___________

     3.4452e-10      3.727e-10
     5.3276e-11     5.4956e-11
    -4.5277e-12    -1.5932e-10
     9.5572e-11    -2.9293e-11
     4.8192e-11    -7.5237e-11
    -1.0847e-10     3.5613e-11

然后将此表写入文件

writetable(T,'testing.txt')

更新:由于用户提出了解析下面给出的数据的问题,方法

fileID = fopen('testtext3.txt','r+');
C = textscan(fileID,'%s%s')
C = 

    {7x1 cell}    {7x1 cell}

>> C{1}

ans = 

    'A'
    '3.4452e-10'
    '5.3276e-11'
    '-4.5277e-12'
    '9.5572e-11'
    '4.8192e-11'
    '-1.0847e-10'