2016-06-19 6 views
2

У меня есть матрица x_training (размер: 1000 * 2304) и другая матрица y_training (размер 1000 * 1), которая содержит метки каждого экземпляра в x_training. Моя цель - создать файл .txt, содержащий метки и x_training. Вот небольшой пример для упрощения:Как создать файл .txt из матрицы?

x_training=[0.2 0.3 
     0.5 0.4 
     0.5 0.9] 
y_training=[1 
      2 
      3] 

так, то file.txt будет содержать:

1 0.2 0.3 
    2 0.5 0.4 
    3 0.5 0.9 

Как я могу это сделать?

ответ

3
x_training=[0.2 0.3; 0.5 0.4; 0.5 0.9]; % X 
y_training=([1 2 3])';     % Y - transposed  

data = [y_training,x_training];   % x and y concatenated 
data = table(data);      % data converted to table 
writetable(data, 'file.txt');   % data saved as file.txt 
+0

проверьте этот размер матрицы 1000 * 2304 и 1000 * 1! –

+0

Он должен работать - см. Ниже (я использовал те и нули в качестве данных): a = нули (1000,2304); b = единицы (1000,1); данные = [b, a]; data = таблица (данные); writeetable (data, 'file.txt'); – OsJoe

+0

затем отредактируйте этот код, а не комментарий, –

3

Его простой. Создание файла (позволяет сказать OutputFile.txt) в папку MATLAB Current и запустить этот скрипт:

A = [y_training x_training]; 
B = A'; 

fileID = fopen('OutPutFile.txt','w'); 
fprintf(fileID, '%i %2.1f %2.1f \n',B); 
fclose(fileID); 

Если вы хотите, чтобы значения, разделенные табуляцией (TSV) файл (который открываемый в Excel), то изменение 2-й линии до:

fprintf(fileID, '%i \t %2.1f \t %2.1f \n', B); 
+0

может работать, я предложил бы конкатенации два первых, то есть 'fprintf (FILEID, '% я% d% d \ п', [y_training x_training ]) 'оба сохраняют вам линию и обеспечивают правильное использование линейного тормоза. – Adriaan

+0

@Adriaan Но это не работает, если пользователь хочет файл TSV, если я не ошибаюсь? –

+0

Я понятия не имею, что такое TSV, и OP специально запрашивает txt, и в этом случае это нормально работает – Adriaan

0

FINAL EDIT

Вы можете создать матрицу данных из которых первый столбец имеет y_training и 2: конец, столбцы x_training?

Пожалуйста, попробуйте и скажите мне, если не работает

data=[y_training x_training(:,1:2304)] %based on your matrix 
fId = fopen('your file.txt', 'w') ; 
fprintf(fId, '%i %2.1f %2.1f \r\n', data(:)) ; % update this line 
fclose(fId) ; 

как я не ваши матрицы, что почему вот демо тестирования этот код

x_training=rand(1000,2304); % creating randomly 1000*2304 matrix as x_training 
y_training=rand(1000,1); % creating randomly 1000*1 matrix as y_training 
test=[y_training x_training(:,1:end)]; 
data=test; 
fId = fopen('your file.txt', 'w') ; 
fprintf(fId, '%i %2.1f %2.1f \r\n', data(:)) ; 
fclose(fId) ; 

Альтернативный метод:

если выше код не дает желаемого выхода, обновите это

data=[y_training x_training(:,1:2304)] %based on your matrix 
dlmwrite('myFile.txt', data); 

Проверьте его и сообщите, какой из них - прекрасный код.

+0

@ Muhammad Я получил эту ошибку Ошибка при использовании horzcat Размеры конкатенированных матриц несовместимы. Ошибка в Untitled (строка 8) data = [y_training x_training] – yosra

+0

@ yosra, использование 'r' является компактным с системами windows. Пожалуйста, найдите мое ** окончательное редактирование **, тестирование этого кода и результаты текстовых файлов. –

+0

@ yosra, если после ** окончательного редактирования ** этого кода вывод не выглядит так, как вы хотите. Затем просто прокомментировал строки, затем передал данные и использовал этот 'dlmwrite ('myFile.txt', data); 'после данных в моем коде. Скажите, какой из них дает вам правильный результат? –

0

Вот альтернативный метод

dlmwrite('testtext2.txt',['x_training y_training'] ,'delimiter','') 
A(:,1) = y_training 
A(:,2:3) = x_training 
dlmwrite('testtext2.txt',[A],'-append','delimiter','\t','roffset',1) 
+0

ваш код не предоставляет решение вопроса, размер x_training и y_training, следует учитывать в этом ответе. –

+0

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

+0

, пожалуйста, прочитайте снова вопрос –