error in embedded matlab function

hi, i have 3 function.m, i use it to develop embedded matlab-function , But it generates this error:
>> Undefined function or method 'fnct1' for input arguments of type'double'
what is the causes? and how can i resolve this error? thanks.

Antworten (3)

pfb
pfb am 28 Apr. 2015
Bearbeitet: pfb am 28 Apr. 2015

0 Stimmen

Matlab is complaining because it cannot find fnct1. This is the typical answer you get when you use a function that does not exist. Just type
nonexistentfunction(42.0)
I assume that fnct1 is the name of one of your functions.
Where and how do you define that function?
You mention .m files. Is the fnct1.m file in your working directory, or anywhere in matlab known path?

4 Kommentare

studentU
studentU am 29 Apr. 2015
Thank you for your repply,
Yes exactly fcnt1 is one of the .m function, belonging to my working directory, fnct1 works very well if I only compiles as a script, but here I use it in embdded function block for calculating more chipped, for his statement I use coder.extrinsic + signature, I compile just the embedded block is its generates this error.
pfb
pfb am 29 Apr. 2015
Not very clear... Is funct1 a script or a function?
Anyway, it seems a simulink problem.
You should specify that in the tags of your question, and in the associated products.
Also, in general a "minimal example" of the code producing the error would be helpful to people trying to help.
it's just that program content is too long ...!
so:
%%funct1.m
function [az, el, de, ho] = fnct1 (ta, tm, tj, th, ti, ts, lo, la, orl, al, ut)
%%...
az = ta + tm;
el = th + ti + tj;
de = lo- ts;
ho = la+orl-ut *al ;
end
%%funct2.m
function [in] = fnct2 (el, az, the paragraph, from, ho)
syms in
in=solve('[sin(la)*sin(de)+cos(hor)]*cos(in)-[cos(al)*sin(de)*cos(la)+cos(de)*sin(al)*sin(hor)]*sin(in)=1');
end
%%funct3.m
function [or] = fnct3 (el, az, in)
syms or
or = solve ('[cos (in) * sin (el) - [sin (b) * cos (e) * cos (az)] * cos (or) - [sin (az) * sin (in) * cos (e)] * sin (or) = 1 ');
end
%%in blocks embedded matlab-function,
function [Cor, Cin] = fnct4 (ta, tm, tj, th, ti, ts, lo, orl,la, al, ut)
coder.extrinsic('fminbnd');
coder.extrinsic('matlabfunction');
coder.extrinsic('fcnt1')
coder.extrinsic('fcnt2')
coder.extrinsic('fcnt3')
[az, el, de, ho] = fnct1 (ta, tm, tj, th, ti, ts, lo, la, orl, al, ut)
fin=matlabfunction(fnct1);
Imin=degtorad(0);
Imax=degtorad(90);
Cin = fminbnd(fin, Imin, Imax)
fori=matlabfunction(fcnt3);%hundl function
Omin=degtorad(-90);
Omax=degtorad(90);
Cor = fminbnd(fori, Omin, Omax)
end
the function.m is save in the working repertory, and i simulate just the matlab function block. i hope that is clear now! thanks for ure coordination.
pfb
pfb am 29 Apr. 2015
Bearbeitet: pfb am 29 Apr. 2015
Uhm, I see that you define fnct1 (in fnct1.m, if I get it right) but then you feed 'fcnt1' into coder.extrinsic.
Same bunch of letters, different order :)
You mistyped "fcnt1" instead of "fnct1".
I guess that's why matlab is complaining.

Melden Sie sich an, um zu kommentieren.

studentU
studentU am 29 Apr. 2015
Bearbeitet: studentU am 29 Apr. 2015

0 Stimmen

i'm sorry, i was wrong, but it generate the sme error!!!!

1 Kommentar

pfb
pfb am 29 Apr. 2015
you should pay more attention if you want other people's help.
Why did you answer your own question instead of my comment now? This produces even more confusion!
Are you sure there are no typos in the argument of coder.extrinsic? Are you sure that you used the single quotes?
I'm not sure of anything now, since what you pasted is not really your code...

Melden Sie sich an, um zu kommentieren.

studentU
studentU am 29 Apr. 2015
Bearbeitet: studentU am 30 Apr. 2015

0 Stimmen

Here it is my program with some reduction but the point is that, I just tried to simplify your understanding, but it appears that I commit typos ....
%%funct1.m
function [az, el, de, ho] = fnct1 (ta, tm, tj, th, ti, ts, lo, la, orl, al, ut)
%%...
az = ta + tm; el = th + ti + tj; de = lo- ts; ho = la+orl-ut *al ;
end
%% funct2.m
function [in] = fnct2 (el, az, the paragraph, from, ho)
syms in
in=solve('[sin(la)*sin(de)+cos(hor)]*cos(in)- [cos(al)*sin(de)*cos(la)+cos(de)*sin(al)*sin(hor)]*sin(in)=1');
end
%% funct3.m
function [or] = fnct3 (el, az, in)
syms or
or = solve ('cos (in) * sin (el) - [sin (b) * cos (e) * cos (az)] * cos (or) -
[sin (az) * sin (in) * cos (e)] * sin (or) = 1 ');
end
%%in blocks embedded matlab-function,
function [Cor, Cin] = fnct4 (ta, tm, tj, th, ti, ts, lo, orl,la, al, ut)
coder.extrinsic('fminbnd');
coder.extrinsic('matlabfunction');
coder.extrinsic('fnct1')
coder.extrinsic('fnct2')
coder.extrinsic('fnct3')
[az, el, de, ho] = fnct1 (ta, tm, tj, th, ti, ts, lo, la, orl, al, ut)
fin=matlabfunction(fnct1);
Imin=degtorad(0);
Imax=degtorad(90);
Cin = fminbnd(fin, Imin, Imax)
fori=matlabfunction(fcnt3);%hundl function
Omin=degtorad(-90);
Omax=degtorad(90);
Cor = fminbnd(fori, Omin, Omax)
end
thank's for your patience

4 Kommentare

pfb
pfb am 29 Apr. 2015
there is a button in the editor for code formatting. That way your code becomes a little more readable. As it is, it is hardly readable.
As to typos, they are often the causes of the error messages one gets. You should make sure the cause of your error is not a typo.
Does the error appear only for fnct1? I mean, are the other calls to coder.extrinsic executed no problem?
studentU
studentU am 30 Apr. 2015
yes the error appear just for fnct1!
pfb
pfb am 30 Apr. 2015
Not easy to single out the error, given your sloppy way of presenting things. For instance, the line you pasted above
%%funct1.m function [az, el, de, ho] = fnct1 (ta, tm, tj, th, ti, ts, lo, la, orl, al, ut) %%...
looks like you commented the first line the code of your function. That would turn it into a script. Or even give you errors because of the "end".
But I do not know, because you do not bother to be clear.
studentU
studentU am 30 Apr. 2015
for lack of space, I have a concern to past the comments correctly. but be sure that typos do not occur in the program.

Melden Sie sich an, um zu kommentieren.

Gefragt:

am 28 Apr. 2015

Kommentiert:

am 30 Apr. 2015

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by