How can I execute a function if it exist, otherwise use a custom function?
16 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Arturo Torres-Romero
el 18 de Oct. de 2025
Comentada: Matt J
el 1 de Nov. de 2025
knnsearch is a function from the "statistics and machine learning toolbox"
I created my own knnsearch, however, if the user has this function already I want to run it from the toolbox. if the user doesn't have it, then execute my implementation.
The problem is that matlab fails in compiler time becasue it is expecting knnsearch to exist.
by the way... I used copilot and chatgpt for suggestions.... but their suggestions didn't work.
function [k_idx, D] = knnsearch_lib(queryPoint, data, k)
% Check if the Toolbox knnsearch function is available
if exist('knnsearch', 'file') == 2
[k_idx, D] = knnsearch(queryPoint, data, k);
else
% If not available, use custom implementation
[k_idx, D] = knn_custom(queryPoint, data, k);
end
end
2 comentarios
Walter Roberson
el 18 de Oct. de 2025
I wonder if the following would work:
testhandle = @knnsearch;
if ~isempty(functions(testhandle).file)
[k_idx, D] = testhandle(querryPoint, data, k);
else
[k_idx, D] = knn_custom(queryPoint, data, k);
end
Respuesta aceptada
Matt J
el 18 de Oct. de 2025
Have the used append (i.e., not prepend) your knnsearch to the path. If a native knnsearch exists above it in the path, it will be used instead.
4 comentarios
Más respuestas (1)
Steven Lord
el 21 de Oct. de 2025
Are you trying to use MATLAB Compiler or MATLAB Coder? If the former, you should know that any code that you want the compiled application to run must be present at the time the code is compiled. There's no "Check if it's available at runtime, and if it isn't run some other code the user provided." or anything like that.
So if you have Statistics and Machine Learning Toolbox present in your installation and if it can be included in an application generated by MATLAB Compiler, just call it. If you don't have this toolbox (but want to provide the non-compiled version of your code to someone who may) or if it is not supported by MATLAB Compiler (I don't remember offhand if it is) you could try guarding the call in a try / catch statement or with an isdeployed call.
If you're trying to use MATLAB Coder, I'm not sure how to tell MATLAB Coder to substitute your function for knnsearch if it's not available, or even if that's possible.
2 comentarios
Matt J
el 1 de Nov. de 2025
Im using simulink, and invoking some scripts during simulation... I think it would be matlab compiler
Simulink and the Matlab Compiler are separate MathWorks products. However, I do believe they make use of the same underlying compiler technology.
Ver también
Categorías
Más información sobre Search Path en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!