在一个文件中找到一个函数,然后选择它在我的程序matlab中执行操作

在一个文件中找到一个函数,然后选择它在我的程序matlab中执行操作,matlab,function,select,call,Matlab,Function,Select,Call,我创建这个函数是为了浏览一个文件中存储的所有函数,现在我想在主程序中选择我的函数。如何选择它 这是我的职责: function testMode(i) a=dir('H_*.m'); if exist('i','var') if isempty(i) z={a.name}'; [selection,ok]=listdlg('ListString',z,'SelectionMode','single'); if ok

我创建这个函数是为了浏览一个文件中存储的所有函数,现在我想在主程序中选择我的函数。如何选择它

这是我的职责:

function testMode(i)
a=dir('H_*.m');
if exist('i','var')
    if isempty(i)
        z={a.name}';
        [selection,ok]=listdlg('ListString',z,'SelectionMode','single');
        if ok
            i=find(selection,1,'first');
        end
    end
    nom=a(i).name;
    nom=nom(1:end-2);
    disp(nom)
else
    disp('fonction a un argument')
end

看起来您将把函数名设置为字符串。要调用该函数,可以使用
feval
,也可以将字符串转换为函数句柄并调用该函数

result = feval(nom, argument1);

后者应该是首选,因为转换可以完成一次,函数句柄可以在转换后重新使用,而且调用语法与调用常规函数完全相同

有关函数句柄的更多信息,请参见
doc function\u handle


另外,有关其他方法,请参阅以下文档:。如果您可以在单个文件中将函数的“菜单”创建为本地函数,那么这种方法可能非常干净和简单,因为它将直接为您提供所有这些子函数的函数句柄的单元格数组。从那里,您可以使用
functions
命令轻松获取要显示的函数名。

您是否在询问如何在main中调用函数?是的,我想知道如何调用它。您的函数代码应该以类似于function result=testMode(i)的内容开头。将此文件保存在项目路径中,在主目录中,只需通过执行testMode(输入)调用它
fcn = str2func(nom);
fcn(argument1);