在MATLAB中创建填充了任意数据的大型txt文件

时间:2015-08-26 11:32:58

标签: matlab

我想在MATLAB中创建一个单独的txt文件,例如2GB大(简单来说不是GiB)。它可以包含任意数据。 在Python(或C)中,它可以简单地完成(Python 3.4代码):

path = r'D:\\file.txt' 
f = open(path, 'w') 
f.seek(2e9 - 1)
f.write('\x00')
f.close()

这种方法(即寻找过去的文件结束并写一个NUL值)在MATLAB R2007b中不起作用,尽管这种方法适用于MATLAB:

path = 'D:\file.txt';    
f = fopen(path, 'w'); % or 'W'    
fwrite(f, 0, 'uint8', 2e9 - 1);    
fclose(f);    

问题是使用MATLAB的速度几乎是Python的17倍....我没想到执行速度更快,但是17x太多,1分钟< - > 17分钟是不同的地狱 在MATLAB中有更快的方法吗?

规格:

  • 操作系统:Windows
  • MATLAB:R2007b
  • 文件系统:FAT32

编辑:
MATLAB中与Python相同的方法不起作用,因为fseek返回-1,可能它达到EOF并且不喜欢它。这是代码:

path = 'D:\file.txt';    
f = fopen(path, 'w'); % or 'W'    
fseek(f, 2e9 -  1, 'bof') ;
fwrite(f, uint8(0));    
fclose(f);  

1 个答案:

答案 0 :(得分:1)

尝试在MATLAB中使用与Python相同的东西:

tic;
path = 'D:\file.txt';    
f = fopen(path, 'W');
fseek(f, 2e9 - 1, 'eof'); %'Try with 2e8, 2e7...'
fwrite(f, uint8(0));
fclose(f);
toc;

(显然寻找过去的文件EOF在R2007b中不起作用)

或者,从MATLAB执行快速编写Python脚本:

cmd_template = 'python.exe C:\\PathToScript\\new_file.py "%s"'
system(sprintf(cmd_template, 'D:\file.txt'));

当然,“new_file.py”必须至少接受一个输入参数arg,即新文件名。