2015-05-20 6 views
-2

У меня есть матрица proba (размер: 10 * 5).Как преобразовать матрицу matlab в файл .txt?

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

Вы можете использовать эту функцию, она полезна для каждой матрицы.

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 
+0

Я пробовал этот код, но я нашел тот же результат, что и другая программа, которую я хочу иметь 1 0.5 2 0.3 .... – sahar

+0

[результат] (http: // 7xj2h9 .com1.z0.glb.clouddn.com/QQ20150520-1 @ 2x.png) это мой результат, но я думаю, что этот метод негибкий. Если у вас есть другая матрица, я думаю, что лучше использовать функцию. – Jackliu91

+0

Я не открываю ссылку, но, как вы сказали, этот метод не работает с большим размером матрицы – sahar

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.

РЕДАКТОР: Операция, не прочитал вопрос полностью, теперь это должно работать нормально.

+0

, запустив эту программу, я не получил результат, который я хочу, мне нравится отображать индекс столбца и его значение – sahar

+0

@sahar попробовать это сейчас, он должен работать нормально. Я не правильно прочитал вопрос, извинился. – GameOfThrows

+0

ошибка: Несоответствие размеров подзаголовков. Ошибка в test_version3 (строка 17) C (t,:, :) = [rowind ', proba (t, :)'] '; – sahar