2011-12-31 91 views
0

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

但现在,问题是我试图测试一个较小的数据集,以检查下面的代码是否工作。

我有一个代码,它打开一个文本文件,扫描它并复制数据并将其保存在另一个名为“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 

我该从哪里出发?

+0

什么是操作系统? 32或64位?这页有帮助。转到增加交换部分http://www.mathworks.com/support/tech-notes/1100/1106.html – 2011-12-31 16:26:01

+0

这是一个64位系统,我该如何设置页面文件大小,自定义大小,系统管理的大小,还是没有分页文件? – Jeiman 2011-12-31 16:33:35

+0

请出示您所做的步骤。您是否编写了一些代码来打开文本文件,或者您是否使用编辑器来打开文本文件? – 2011-12-31 16:58:58

回答

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或一些同等功能的使用阅读全部内容。

+0

我需要一个函数来打开文件,然后从那里调用它在命令窗口?如果是这样,我将如何在m文件中调用该函数?谢谢 – Jeiman 2011-12-31 17:23:46

+1

我建议你将所有代码写入m文件,并从命令行调用它。因此,m文件应该包含与我在示例中给出的代码相似的代码,其中为输出文件添加另一个fopen,并在循环内写入逻辑。 – 2011-12-31 17:30:24

+0

基本上,我想打开一个文件,存储在一个单元格或矩阵数组中。从那里,我想操纵数据,因为我需要它。然后将操纵的数据保存到另一个文本文件中。我该如何去做呢? – Jeiman 2011-12-31 20:39:15

2

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

+0

基本上,我想打开一个文件,存储在一个单元格或矩阵数组中。从那里,我想操纵数据,因为我需要它。然后将操纵的数据保存到另一个文本文件中。我该如何去做呢? – Jeiman 2011-12-31 17:53:02