0
我正在嘗試在MEX函數中創建矩陣。以下作品:爲什麼mxCreateNumericMatrix的最大尺寸小於系統最大陣列尺寸?
uint64_t N;
N = 2147483647; // N = 2*2^30 -1
plhs[0] = mxCreateNumericMatrix(N,1,mxUINT8_CLASS,mxREAL);
但是,我無法創建一個數組,它是這個尺寸:
uint64_t N;
N = 2147483648; // N = 2*2^30
plhs[0] = mxCreateNumericMatrix(N,1,mxUINT8_CLASS,mxREAL);
前面的代碼引發錯誤:
maximum variable size allowed by the function exceeded
這是令人困惑,因爲我的系統(運行64位Matlab 2010b的64位Linux)告訴我最大的數組大小實際上非常大。
[~,M] = computer
M =
281474976710655 % 2^48 -1 for those of you keeping track
此外,在命令行中,我能夠創造非常大的陣列,並且已經相當愉快的一段時間,通過類似以下的調用:
a = zeros(16*2^30,1,'uint8');
disp(uint64(numel(a)))
17179869184
我的問題是,爲什麼我無法在我的mex函數中創建數組,我很明顯可以從命令行或其他* .m函數創建數組?
謝謝。
P.S. - 我也在Mathworks論壇上提過這個問題。我想我會盡可能大的網。如果首先在那裏回答,我會在這裏發佈。
我不知道爲什麼這還沒有成爲64位MATLAB安裝的默認值。 – chappjc