Matlab 依赖于工作区和内存的函数

Matlab 依赖于工作区和内存的函数,matlab,function,memory,workspace,Matlab,Function,Memory,Workspace,我有一个函数,它从.mat文件获取输入。这很好,但最近我不得不更新这些变量,它们的数量增加了几个数量级。因此,加载时间增加 由于该函数被迭代10000次,因此现在这是一个主要问题。您可能会问,为什么要首先加载这些工作区变量?答案是,我导入的变量可能会不时更改,在调用函数之前,我可以方便地将这些变量保存为工作区。前面的代码在脚本中编写了类似于a=1b=4等的变量,只有当用户访问我不愿访问的代码时,这些变量才起作用 所以问题是,如何在函数中优雅地访问这些变量 function load v

我有一个函数,它从
.mat
文件获取输入。这很好,但最近我不得不更新这些变量,它们的数量增加了几个数量级。因此,加载时间增加

由于该函数被迭代
10000次
,因此现在这是一个主要问题。您可能会问,为什么要首先加载这些工作区变量?答案是,我导入的变量可能会不时更改,在调用函数之前,我可以方便地将这些变量保存为工作区。前面的代码在脚本中编写了类似于
a=1
b=4
等的变量,只有当用户访问我不愿访问的代码时,这些变量才起作用

所以问题是,如何在函数中优雅地访问这些变量

function 
    load vars.mat
    execute statements ...
end

似乎是一个慢得多的

function
    a=1
    b=4 
    ...
    execute statements
end

为什么不让这些变量成为全局变量,并在每次执行时加载它们一次呢?您好,非常感谢您的贡献。我这样做了:)但它仍然比脚本形式慢,请不要问为什么。也许在工作区中放东西比在脚本中放东西要消耗更多的内存,而脚本是多次执行的?我不确定我是否正确理解你的问题,但是变量的数量是固定的吗?可以编写以下格式的文件:callerfunction(),load workspace.mat,[output]=actualfunction(variables),但当然,只有当变量保持不变或者您必须更改actualfunction的“variables”参数时,这才起作用。是的,它们保持不变,从不更改。在函数中,加载它们一次,然后使用它们应该是可以的,因为这样就不需要进一步的操作了。但是,当我调用fsolve时,这个函数不接受我前面定义的全局变量。总的来说,这是有点慢,我不能确切地找出原因。你能给我一个调用函数的具体例子,让我先试试你的解决方案吗?
function
    a=1
    b=4 
    ...
    execute statements
end