Чтение чисел и строк с плавающей запятой из файла - PullRequest
1 голос
/ 11 апреля 2010

Я использую следующие функции для записи и чтения 4098 чисел с плавающей запятой в MATLAB:

Письмо:

fid = fopen(completepath, 'w');

fprintf(fid, '%1.30f\r\n', y) 

Чтение:

data = textread(completepath, '%f', 4098);

, где у содержит 4098 чисел. Теперь я хочу написать и прочитать 3 строки в конце этих данных. Как мне прочитать два разных типа данных? Пожалуйста, помогите мне. Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 11 апреля 2010

Вот пример того, что вы хотите сделать, используя TEXTSCAN для чтения файла вместо TEXTREAD (который будет удален в будущей версии MATLAB):

%# Writing to the file:

fid = fopen(completepath,'w');  %# Open the file
fprintf(fid,'%1.30f\r\n',y);    %# Write the data
fprintf(fid,'Hello\r\n');       %# Write string 1
fprintf(fid,'there\r\n');       %# Write string 2
fprintf(fid,'world!\r\n');      %# Write string 3
fclose(fid);                    %# Close the file

%# Reading from the file:

fid = fopen(completepath,'r');      %# Open the file
data = textscan(fid,'%f',4098);     %# Read the data
stringData = textscan(fid,'%s',3);  %# Read the strings
fclose(fid);                        %# Close the file
1 голос
/ 11 апреля 2010

Ну, вы можете написать строку в любой момент, когда вы записываете в файл следующее:

fprintf(fid, '%s', mystring);

Конечно, вы можете захотеть что-то более похожее на форму, которую вы дали:

fprintf(fid,'%s\r\n', mystring);

И вы можете смешивать число с плавающей запятой со строкой так:

fprintf(fid, '%1.30f %s\r\n', y, mystring);

Если вы имеете дело со смешанными типами данных, вы можете использовать fscanf вместо textread, если форматирование не очень регулярное. Например,

data = fscanf(fid, '%s', 1);

читает одну символьную строку из файла.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...