Matlab:如何在工作区中用变量覆盖内部函数

Matlab: How to override intrinsic function with variable in workspace

我想知道如何在 运行 生成 m 文件时使用 Matlab R2015a 工作区中定义的变量覆盖内部函数。

我的意思是如果我定义:

function test
fun1
clear input
load test
plot(input)
return

function fun1
input=1:10;
save('test.mat','input')
return

我运行测试,然后我得到:

Error using input
Not enough input arguments.

Error in test (line 8)
plot(input) 

Matlab 将输入作为其内置函数。

你知道如何解决这个问题(不改变变量名)吗?

谢谢。

指定准确的文件名,包括扩展名。 最好使用接受输入的变量。

function test
    fun1
    clear input
    data=load('test.mat');
    plot(data.input)
    return
end   
function fun1
    input=1:10;
    save('test.mat','input')
    return
end

如果您想使用相同的数据结构,您可以使用:

data.input=1:10;
save('test.mat','-struct','data')

解决方案在@Dev-iL的评论中给出

最好不要将变量生成到工作区中的现有变量中。

所以这将使上面的简单示例起作用:

A=load('test.mat');
input=A.input