我在具有4 GB物理RAM的Windows 7x64系统上运行此代码:
fileID1 = fopen ('D:\A\B\T3\T11.bin','r');
A1 = fread(fileID1);
fclose(fileID1);
fileID2 = fopen ('D:\A\B\T3\T12_real.bin','r');
A2 = fread(fileID2);
fclose(fileID2);
fileID3 = fopen ('D:\A\B\T3\T12_imag.bin','r');
A3 = fread(fileID3);
fclose(fileID3);
fileID4 = fopen ('D:\A\B\T3\T13_real.bin','r');
A4 = fread(fileID4);
fclose(fileID4);
fileID5 = fopen ('D:\A\B\T3\T13_imag.bin','r');
A5 = fread(fileID5);
fclose(fileID5);
fileID6 = fopen ('D:\A\B\T3\T22.bin','r');
A6 = fread(fileID6);
fclose(fileID6);
fileID7 = fopen ('D:\A\B\T3\T23_real.bin','r');
A7 = fread(fileID7);
fclose(fileID7);
fileID8 = fopen ('D:\A\B\T3\T23_imag.bin','r');
A8 = fread(fileID8);
fclose(fileID8);
fileID9 = fopen ('D:\A\B\T3\T33.bin','r');
A9 = fread(fileID9);
问题是遇到错误:
Error using fread
Out of memory. Type HELP MEMORY for your options.
Error in freeman2coponent (line 24)
A4 = fread(fileID4);
我尝试打开的九个文件中的每一个都是一个大小为159 MB的文件,它有162875472x1个双元素。我需要同时在所有九个文件中的像素及其邻居的值来进行计算。 有没有一种有效的方法来做到这一点?我希望我的代码不要花太多时间和内存 我用二进制查看器打开了一个文件,这些是文件的内容:
答案 0 :(得分:-1)
如果将所有值强制转换为uint8,请确保在进行任何计算之前将其强制转换为double。
matlab没有促销,所以如果你拿了很多的总和,如果uint8s,它会在256处饱和,如果你取多个整数的平均值,你就不会得到分数。
一个更好的方法可能只加载一小块文件,然后按块发送blcok