gpt4 book ai didi

matlab - 有没有办法找到引用函数丢失的 .m 文件?

转载 作者:太空宇宙 更新时间:2023-11-03 20:05:38 25 4
gpt4 key购买 nike

当 Matlab 解释器解释未在 .m 文件中实现的函数时,会发生运行时错误。有没有办法在“编译时”找到这些错误,即是否有一个脚本可以解析我的 matlab 代码,检查所有调用的函数并告诉我哪些 .m - 文件丢失(关于我定义的路径)?

最佳答案

快速回答:不。

Depfun 可能是我的第一个猜测,作为这个问题的解决方案,但它只为您提供路径上存在的依赖项的列表,而不是那些不存在的依赖项的列表。同样,mlintmlintmex 对此没有我希望的那么有用。

我认为其原因如下:函数调用和下标的语法在 MATLAB 中是相同的。

判断 foo(bar) 是对“foo.m”的函数调用还是对矩阵“foo”下标的尝试的唯一方法是执行到该点的代码,并查看是否有一个矩阵“foo”存在于作用域中和/或如果 foo.m 存在于路径中。如果两者都存在,则 MATLAB 的优先级规则决定符号“foo”是被视为函数调用还是被视为下标操作。

在下面的玩具示例中,表达式“ambiguous(1:9)”首先被视为函数调用,然后被视为下标操作:

function test

disp( ambiguous( 1:9 ) )
ambiguous = 'data item';
disp( ambiguous( 1:9 ) )

end
function szMsg = ambiguous( anArgument )
szMsg = 'function call';
end

还可以使用 evalevalin 创建变量,并操纵 MATLAB 路径将 m 文件带入和带出范围。这些原因共同导致这个问题的解决方案对于一般情况来说是不切实际的(甚至可能是不可能的)。

关于matlab - 有没有办法找到引用函数丢失的 .m 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5592314/

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