我有一个矩阵问题(大小: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
我需要帮助,我该怎么办?先谢谢
答案 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