从文件中读取浮点数和字符串

时间:2010-04-11 04:01:38

标签: matlab file-io

我使用以下函数在MATLAB中编写和读取4098个浮点数:

写作:

fid = fopen(completepath, 'w');

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

读:

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

其中y包含4098个数字。我现在想在这些数据的末尾写入和读取3个字符串。如何读取两种不同的数据类型?请帮我。提前谢谢。

2 个答案:

答案 0 :(得分:2)

以下是我认为您想要做的一个示例,使用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 :(得分:1)

好吧,当您使用以下内容写入文件时,您可以随时写出一个字符串:

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),所以你可以在网上找到更多关于它们的信息。