gpt4 book ai didi

matlab - 如何从命令提示符调用 .m 的内部函数?

转载 作者:太空宇宙 更新时间:2023-11-03 19:44:51 27 4
gpt4 key购买 nike

问题是:我有一个 .m 文件要测试,其中有一个主函数和几个由主函数调用的内部函数。

如何从控制台调用此内部函数(以测试它们)?

例子:

function main
function_1;
function_1;
end

function_1
disp('this is');
end

function_2
disp(' an example');
end

如何直接从控制台测试它?

最佳答案

您实际上可以使用 internal (local) function在定义它的 M 文件之外,如果你有它的句柄。例如,以下函数返回所有带有 the localfunctions command 的子函数的句柄。 ,

% internalHandlesTest.m
function [out,hl] = internalHandlesTest(in)

out = subfun1(in);

% hl = @subfun1; % just to get one internal function handle
hl = localfunctions; % to get all internal function handles

end

function subout = subfun1(subin)
% still internalHandlesTest.m
fprintf('You are using internalHandlesTest>subfun1!\n');
subout = subin;
end

function subfun2()
% still internalHandlesTest.m
fprintf('You are using internalHandlesTest>subfun2!\n');
end

让我们试试看:

>> [out,hl] = internalHandlesTest(0);
You are using internalHandlesTest>subfun1!
>> disp(hl)
@subfun1
@subfun2
>> hl{1}(1)
You are using internalHandlesTest>subfun1!
ans =
1
>> hl{2}()
You are using internalHandlesTest>subfun2!
>>

因此,我们可以在 M 文件之外使用内部函数。这些函数属于 scopedfunctions 类型,我们能够这样做是因为 MATLAB 会跟踪它的 parentage 和源文件。查看 the functions command 的输出在这些句柄上:

>> functions(hl{1})
ans =
function: 'subfun1'
type: 'scopedfunction'
file: 'E:\Users\jchappelow\Documents\MATLAB\internalHandlesTest.m'
parentage: {'subfun1' 'internalHandlesTest'}

当然,您可以很容易地看到内部函数的帮助:

>> help internalHandlesTest>subfun1
still internalHandlesTest.m

但要运行本地函数,您需要获得一个函数句柄,该函数句柄只能通过规范函数的输出参数获得。

关于matlab - 如何从命令提示符调用 .m 的内部函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19401512/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com