Alternative to using global for a very large array
古いコメントを表示
Hi
I have a quite large array of data (100s of MB) that I am using as a LUT in multiple functions. If I declare it as a parameter, it will be copied locally by each function, which is an unjustified waste of memory. The solution I am currently using is to define it as global. I know that globals are highly discouraged, but is there a smarter alternative for my case?
1 件のコメント
Bruno Luong
2019 年 9 月 17 日
編集済み: Bruno Luong
2019 年 9 月 17 日
MATLAB does not copy the matrix if you call it as parameter, or even assign it to new variable
BIG = rand(1e4);
B = BIG;
C = foo(BIG);
function C = foo(A)
C = A;
end
A, B, C use a shared-memory of data.
So remove this global and program normally as you would and let MATLAB does the work.
NOTE: However if you do this there is 2 big matrices in memory after the third statement
BIG = rand(1e4);
B = BIG;
B(1) = 10;
採用された回答
その他の回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で Characters and Strings についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!