如何将矩阵matlab转换为文件.txt?

时间:2015-05-20 11:21:53

标签: matlab file matrix

我有一个矩阵问题(大小:10 * 5)。

proba=[0.5 0.3 0.8 0.9 0.8;
     0.50 0.36 0.58 0.58 0.98;
     0.1 0.25 0.6 0.8 0.9;
     0.5 0.3 0.8 0.9 0.8;
    0.2 0.9 0.58 0.58 0.69;
    0.58 0.14 0.1 0.2 0.3;
    0.25 0.9 0.8 0.7 0.5;
    0.58 0.69 0.25 0.1 0.1;
    0.1 0.25 0.36 0.2 0.3;
   0.5 0.3 0.8 0.9 0.8 ];

我想将此矩阵转换为用于编写索引列的文本文件(proba.txt)以及每行的列值,如下所示:

 1 0.5 2 0.3 3 0.8 4 0.9 5 0.8
 1 0.50 2 0.36 3 0.58 4 0.58 5 0.98
             .
             .
             .
 1 0.5 2 0.3 3 0.8 4 0.9 5 0.8 

我需要帮助,我该怎么办?先谢谢

2 个答案:

答案 0 :(得分:0)

您可以使用dlmwrite轻松完成此操作,但首先您要在矩阵前面添加索引列:

function result = writematrix(proba)
rowind = 1:size(proba,2);
for t = 1:size(proba,1);
     C(t,:,:) =  [rowind',proba(t,:)']';
     D(t,:) =  C(t(:),:);

end

dlmwrite('filename.txt',D,'\t') %//I assume you want tab delimiter, if you want space, it is ' ' instead
%//dlmwrite('filename.txt',D,' ')
end

请注意,这会将文本文件写入您的本地目录,并且它仅适用于字符串的数值而不是字符串,最好使用csvwrite。

编辑:Ops,没有完全阅读这个问题,现在应该可以正常工作了。

答案 1 :(得分:0)

您可以使用此功能,它对每个矩阵都很有用。

function data = addIndex(X)
    [r, c] = size(X);
    index = ones(r, 1);
    data = zeros(r, 2 * c);
    for i = 1:c
        data(:, 2 * i - 1) = i .* index;
        data(:, 2 * i) = X(:, i);
    end
    dlmwrite('proba.txt', data, '\t')
end
相关问题