2016-02-23 2 views
0

Предположим, у меня есть матрица М, какКак написать в конце каждой строки в файле через Matlab?

1 2 3 

4 5 6 

7 8 9 

и я запись в файл с помощью

dlmwrite(fullfile('C:\Users\xyz\Documents\MATLAB','test.txt'), M, 'delimiter', ' ', 'newline', 'pc'); 

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

1 2 3 Z 

4 5 6 Z 

7 8 9 Z 

Примечание: существует n рядов и 3 столбца. Как сделать добавление Z как 4-го столбца в конце каждой строки.

как я могу это сделать? Благодарю.

+0

улучшено форматирование –

ответ

0

Если вы хотите сначала прочитать существующие данные в M, вы захотите использовать textscan.

filename = 'input.txt'; 

fid = fopen(filename, 'rb'); 
M = textscan(fid, '%d %d %d'); 
M = cat(2, M{:}); 
fclose(fid); 

Затем, чтобы написать его, вы будете хотеть использовать fprintf, а не потому, что dlmwritedlmwrite работает только для числовых аргументов ввода.

fid = fopen(filename, 'wb'); 
fprintf(fid, '%d %d %d Z\r\n', M'); 
fclose(fid); 

Хитрость здесь в том, что fprintf принимает входные данные, пока не закончится, поэтому вместо того, пробегаем по всем строкам M вы можете просто передать всю матрицу (обеспечение строки-мажорных упорядоченность с оператором транспозиции) в fprintf и он с радостью напишет данные в файл до тех пор, пока не закончится информация в M.

Обратите внимание на использование \r\n, которое необходимо для разрывов на линии вашего ПК.

+0

Если у меня уже есть файл с данными в ней с п строками и 3 перевалами, и я хочу, чтобы добавить 4-й седловину к каждой строке это возможно, когда есть уже данные для 3 столбцов в файле? – Leo

+0

Для этого вы хотели бы использовать 'textscan' для чтения в старом файле, а затем выписать новый файл, используя этот подход, как только у вас будет' M'. – Suever

+0

может показать код для этого. Благодарю. – Leo

0

Использование fprintf вместо:

A = [1, 2, 3; 4, 5, 6; 7, 8, 9]; 
fid = fopen('file.txt', 'wt'); 
for i = 1:3 
    fprintf(fid, '%d %d %d Z\n', A(i,1), A(i,2), A(i,3)); 
end 
+0

Если у меня уже есть файл с данными в нем с n строками и 3 cols, и я хочу добавить 4-й столбец для каждой строки - это возможно, когда в файле уже есть данные для 3 cols? – Leo

+0

Вам нужно будет прочитать данные в этом файле, а затем переписать его в новый файл с новым символом, добавленным к каждой строке. – neerad29