У меня есть несколько больших матриц, которые нужно много раз передавать разным функциям в итеративном алгоритме. Как избежать ненужного копирования переменных в функцию для ускорения работы программы? Есть ли способ сгруппировать эти матрицы в структуру или класс и передать их по ссылке или указателю?
a=zeros(1000,1000);
b=zeros(1000,1000);
d=myfunction(a,b);
a=myfunction2(b,d);
....
Спасибо.
Обновление: я должен был предоставить более подробную информацию, как я вижу в комментариях. У меня есть несколько больших матриц. Некоторые из них остаются постоянными в программе, а другие меняются в каждой функции на каждой итерации. Итак, если я передаю эти матрицы по значению, Matlab делает копию этого, меняет значение и снова копирует их как вывод функции, а затем они выходят за рамки и уничтожаются, и на каждой итерации все это ненужное копирование делает программу ужасно медленно. Если бы мне нужно было запрограммировать это на C++, я бы использовал объектно-ориентированное программирование для этих матриц и передал бы их как ссылку на функцию, но я не знаю, возможно ли это в MATLAB.
myfunction
не изменяетa
иb
, то копии переменных не будет, они будут переданы как ссылки. MATLAB довольно умен и делает все это «из-под капота». - person Ander Biguri   schedule 02.09.2016