gpt4 book ai didi

windows - 无法定义具有重复名称 "DoBenchmark"的奇怪函数,因为该函数仅在一个地方定义

转载 作者:可可西里 更新时间:2023-11-01 10:02:26 25 4
gpt4 key购买 nike

(在最新的 windows10 下使用 Matlab 2018b。)我有一个文件夹 Folder包含 DoStuff.m其代码是:

%addpath('./SubFolder/SubSubFolder'); // SubSubFolder contains mex file defining myFunction used below
%close all;

function [res] = DoStuff(param) % Function has same name as the script defining it

res = myFunction(param)

end

哪里myFunctionmexw64 中定义包含在 './SubFolder/SubSubFolder' 中的文件.

自然地,在 Matlab 的 GUI 中(在文件夹 Folder 中)执行函数 DoStuff(param) 会抛出以下错误:

'myFunction' is not found in the current folder or on the MATLAB path, but exists in ...

... 在 './SubFolder/SubSubFolder' 中.高超。因此,我删除了 %DoStuff.m 的第一行并在 Matlab 的 GUI 中(在文件夹 Folder 中)重新执行函数 DoStuff(param) 并得到以下错误:

Function with duplicate name "DoStuff" cannot be defined.

奇怪,如DoStuff仅在一处定义:在 DoStuff.m 内脚本。 (由 which -all DoStuff 中的 Matlab 中的 Folder 确认。)

备注。在 Matlab2018b 中,可以定义一个名为 toto 的函数在名为 toto.m 的脚本中,matlab用起来不会有任何问题。所以我的问题与相同的命名无关。它与添加 addpath 有关行,但我不知道如何。确认这种感觉:更换线res = myFunction(param)res = 1并且取消注释 addpath 也会导致命名错误。

最佳答案

如果函数在脚本文件中,则 m 文件的名称必须与函数的名称不同。即,如果 DoStuff 不是函数文件,则您的 m 文件名不能是 DoStuff.mDoStuff.m 应该是这样的函数文件:

function [res] = DoStuff(param) % Note that there is no executable line before this
res = myFunction(param)
end

或者您应该重命名您的函数或您的 m 文件。

假设您重命名了您的 m 文件,您可以像这样使用它:

addpath('./SubFolder/SubSubFolder'); %SubSubFolder contains mex file defining myFunction
close all;

res = DoStuff(param); %Calling the function

function [res] = DoStuff(param)
res = myFunction(param)
end

关于windows - 无法定义具有重复名称 "DoBenchmark"的奇怪函数,因为该函数仅在一个地方定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56040741/

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