0

我有几个大矩阵应该在迭代算法中多次传递给不同的函数。如何避免不必要地将变量复制到函数中以加快程序速度?有没有办法将这些矩阵分组到一个结构或类中并通过引用或指针传递它们?

a=zeros(1000,1000);
b=zeros(1000,1000);
d=myfunction(a,b);
a=myfunction2(b,d);
....

谢谢。

更新:正如我在评论中看到的那样,我应该提供更多细节。我有几个大矩阵。它们中很少有在程序中保持不变,而另一些则在每次迭代时在每个函数中发生变化。因此,如果我按值传递这些矩阵,Matlab 会对其进行复制,更改值并再次将它们复制为函数的输出,然后它们超出范围并被销毁,并且在每次迭代中,所有这些不必要的复制都会使程序非常慢。如果我用 C++ 对其进行编程,我将对这些矩阵使用面向对象的编程,并将它们作为对函数的引用传递,但我不知道这在 MATLAB 中是否可行。

4

1 回答 1

1

安德的评论是绝对正确的。也就是说,如果您确实需要函数来修改变量内容,那么您可能需要考虑重构代码以避免这种情况。a我知道您发布的代码只是一个简化的示例,但是您可以查看它并提出诸如“是否b需要在函数之外进行初始化?函数可以初始化它们并返回它们吗?”之类的问题。

如果您真的无法解决它,那么您可以将数据封装在句柄类中,然后将句柄类传递给函数。

于 2016-09-02T15:46:26.190 回答