MATLAB: What is the most efficient way: load or set global variable

global variablesload

I'm working with a script that calls a function several times (about 1000); in this function, a large complex-valued matrix is used, this matrix called "promat" is saved in file also named "promat.mat". To be specific, my function is following:
function y=process(x)
do something with x
y=x.*promat;
end
I think about three solutions:
+ First: load promat to work space, then set it as global variable and declare it in the function.
+ Second: load promat to work space, then set it as an input of the function as:
function y=process(x,promat)
+ Third: load the matrix inside the function.
I wonder what is the fastest and most efficient way to do it, both in memory use efficiency and performance. Any answers and discusses will be appreciated :).

Best Answer

  • If you don't change the values for promat inside the function, Matlab will not be allocating a new memory for promat. As long a promat serves only the purpose of being read inside your function, option second is better.
    I would avoid the declaring global variable. Also loading the promat.mat inside the matrix will create extra overheads and most likely reduce performance.