请问能否在文件读写中实现这样的过程?
最近在处理数据的时候需要先读入一个大的文本文件(这个文件是事先用ones(M,N)命令生成后保存在工作目录下的),读入这个文件的时候使用load命令,之后在程序中对文件中的数据进行操作,其实就是把里面某些位置的数值换成0,最后在把文件又写回磁盘(使用save命令)。由于文本文件较大,读取的时候,不仅速度慢,而且也要求内存足够大。同样在存储的时候也有这样的问题。所以一整个晚上都在想能不能实现一个既可以提高读去和存储速度,又可以节省内存的过程:只需要把文件打开,而不是load到内存中,操作的时候只对文本文件中需要替换的数据(程序中的其他函数能够确定相应的位置(i,j))进行操作呢?向大家请教,谢谢。其实就是有这个想法,昨天看了一些help中有关读写的内容,也尝试写了一个M文件,但是没有实现这个想法。下面把M文件给出来,请大家帮忙,谢谢。
function speed
%
fid=fopen('file.txt','r+') ; %file.txt 这个文本文件是由ones(1000,1000)生成并保存在当前工作目录下
%
A=fread(fid); %读文件
%
这儿省略了一部份函数,主要是确定A中需要把数值1换成0 的具体位置
%
A(i,j)=0;% 这个语句之前已经确定了具体的i,j,现在把A中相应的位置换成0
%
fwrite(fid,A);
%
就这些,应该有很多问题,请大家帮忙,谢谢。
[ 本帖最后由 kanhlbai 于 2009-6-17 10:20 编辑 ] ...矩阵形式:M*N,所有数值都是1...
为何不直接用ones(m,n) !?
还有建议楼主说清楚些, 最好给出完整原始问题, 及LZ初步的代码!
回复 沙发 ChaChing 的帖子
谢谢斑竹,我昨天回去的时间有点赶,所有没有把问题说清楚,现在正在编辑。恳请大家出谋划策,谢谢!
[ 本帖最后由 ChaChing 于 2009-6-25 20:27 编辑 ] 帮助中Accessing Files with Memory-Mapping这部分的内容应该是你想要 原帖由 ydlcsu 于 2009-6-17 11:04 发表 http://www.chinavib.com/forum/images/common/back.gif
帮助中Accessing Files with Memory-Mapping这部分的内容应该是你想要
正在看ydlcsu提供的信息,希望能够解决这个问题,不过大家还有其他建议的话,请直言阿,谢谢。 读取数据的时候用
x=importdata('x.txt')
保存数据的时候用
dlmwrite('x.txt',x)
会不会快一点? help
fseek
fseek
Set file position indicator
Syntax
status = fseek(fid, offset, origin)
Description
status = fseek(fid, offset, origin) repositions the file position indicator in the file with the given fid to the byte with the specified offset relative to origin.
例如:
fid=fopen('idl2.txt','r+');
fseek(fid, 4, 'bof');
fwrite(fid, num2str(20));
fclose(fid);
页:
[1]