在matlab中打开文本文件并从matlab中保存

时间:2011-12-31 16:13:24

标签: matlab fopen text-files

我有一个包含需要提取并插入新文本文件的数据的大文本文件。我可能需要将这些数据存储在一个单元/矩阵数组中?

但就目前而言,问题是我正在尝试测试较小的数据集,以检查下面的代码是否有效。

我有一个代码,在其中打开一个文本文件,扫描它并复制数据并将其保存在另一个名为" output.txt"的文本文件中。

问题:似乎没有正确保存文件。它只是在文本文件中显示一个空数组,例如" [] "。原始文本文件只包含字符串。

%opens the text file and checks it line by line.
fid1 = fopen('sample.txt');
tline = fgetl(fid1);
while ischar(tline)
    disp(tline);
    tline = fgetl(fid1);
end
fclose(fid1);


% save the sample.txt file to a new text fie
fid = fopen('output.txt', 'w');
fprintf(fid, '%s %s\n', fid1);
fclose(fid);

% view the contents of the file
type exp.txt

我从哪里开始?

2 个答案:

答案 0 :(得分:5)

通过一次将所有内容加载到内存来读取输入文件并不是一个好习惯。这样,您能够读取的文件大小受到计算机上的内存量(或操作系统愿意分配给单个进程的内存量)的限制。

相反,使用fopen及其相关函数,以逐行或逐字符形式读取文件。

例如,

fid1 = fopen('sample.txt', 'r');
fid = fopen('output.txt', 'w');

tline = fgetl(fid1);
while ischar(tline)
    fprintf(fid, '%s\n', tline);
    tline = fgetl(fid1);    
end

fclose(fid1);
fclose(fid);

type output.txt

当然,如果你事先知道输入文件永远不会很大,你可以通过textread或一些等效函数一次性读取它。

答案 1 :(得分:2)

尝试使用textread,它从文本文件中读取数据并将其存储为矩阵或Cell数组。在一天结束时,我假设您希望将数据存储在变量中以根据需要对其进行操作。完成操作后,使用fopen打开文件并使用fprintf以您想要的格式写入数据。