我想在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中有更快的方法吗?
规格:
编辑:
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);
答案 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,即新文件名。