我想创建一个 memmap
在 MATLAB 中。
在 python 中,我可以通过以下方式做到这一点:
ut = np.memmap('my_array.mmap', dtype=np.float64, mode='w+', shape=(140000,3504))
然后我将它用作普通数组,操作系统确保我的内存永远不会溢出。如何在 MATLAB 中执行此操作?
从文档看来,它似乎希望我先在 MATLAB 中创建一些数组,然后将其写入文件并使用 memmap
读取!
Matlab 文档不够清晰: 请提供一个创建大小为 (140000,15000) 的随机数组并将其乘以其他类似矩阵的示例。
最佳答案
你必须先创建一个空文件,然后使用memmapfile:
size=[140000,3504];
filesize=0;
datatype='float64';
filename='my_array.dat';
fid=fopen(filename,'w+');
max_chunk_size=1000000;
%fills an empty file
while filesize<prod(size)
to_write=min(prod(size)-filesize,max_chunk_size);
filesize=filesize+fwrite(f, zeros(to_write,1), datatype);
end
fclose(fid);
m = memmapfile(filename,'Format','double', 'Writable',true);
关于python - MATLAB 中的 Memmap 用于大数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33203467/