How to call a created function in a different function
6 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hi there!
I made several functions like myfunc1.m , myfunc2.m, myfunc3.m and so on.
they all take one function and two doubles, and they output 2 arrays like this.
function [X Y] = myfunc3(f, a, b)
% ------------------------
% --Doing Something like--
% -- x = a:b --
% -- y = 3*x --
% -- X = x --
% -- Y = f(x,y) --
% ------------------------
end
Im trying to make a new function that takes one of my functions as its argument. Expected outputs will be like this.
>> myNewfunc(@ myfunc3)
ans =
'It is my 3rd function!'
>> myNewfunc(@ myfunc2)
ans =
'It is my 2nd function!'
so I wrote like this to call a function in the new function
function myNewfunc(myfunc)
% --------------------------------
% -- %Hard Coded f, a, b --
% -- f = @(x,y) x + y --
% -- a = 1 --
% -- b = 10 --
% -- [X Y] = myfunc(f,a,b) --
% --------------------------------
%
%Somehow Check and disp its number
%
end
but it gets an error at the line of [X Y] = myfunc(f, a, b) and shows "Reference to a cleared variable myfunc."
How can I tell Matlab I am trying to call one of created functions in another function?
Thank you! and any help will be appreciated.
0 Commenti
Risposta accettata
Stephen23
il 14 Gen 2020
Modificato: Stephen23
il 27 Lug 2021
function out = myNewFunc(fun)
val = str2double(regexp(func2str(fun),'\d+$','once','match'));
out = sprintf('It is my %s function!',num2ord(val));
end
Tested:
>> myNewFunc(@myfunc3)
ans =
It is my 3rd function!
See also:
Tip: rather than creating numbered functions, which will be hard to access and just clutter up the workspace, you might like to consider simply creating a cell array of function handles (which can be trivially accessed using indexing):
C = {@(...)..., @(...)..., ...} % define
C{1}(...) % call the first function
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Function Creation in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!