Info
La pregunta está cerrada. Vuélvala a abrir para editarla o responderla.
mex-file creation
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
I was trying to create a mex-file, however I can't do it beacuse Matlab shows the following error: Class function_handle is not support by coder Type. I wrote the following script and functions to calculate the solution of non-linear equation.
clear
clc
ep=10^(-6); % tollerance
itermax=50; % number max of iterations
a=0; % a,b initial interval
b=2;
[x,iter] = Bisection(@f,a,b,ep,itermax)
%%%functions
function [x,iter] = Bisection(f,a,b,ep,itermax)
%
% Function for the solution of the non-linear equation
% f(x)=0
% by the BISECTION method
%
% INPUT data:
% f name of the MATLAB function implementing
% the non-linear function
%
% a,b initial interval [a,b]
% such that f(a)f(b) < 0
%
% ep tolerance (>0)
%
% OUTPUT data:
% x solution of the non-linear equation
% iter number of performed iterations
%
fa = feval(f,a);
fb = feval(f,b);
if fa*fb > 0
fprintf('\n\nThe initial interval does not satisfy f(a)f(b) < 0.')
return
end
iter=0;
% while abs(a-b) > ep+eps*max(abs(a),abs(b))
while abs(a-b) >= 2*ep && (iter < itermax)
mid = (a+b)/2;
fmid = feval(f,mid);
if fa*fmid<=0
% root in [a,mid].
b = mid;
fb = fmid;
else
% root in [mid,b].
a = mid;
fa = fmid;
end
iter=iter+1;
end
x = (a+b)/2;
function [ y ] = f( x )
y=x.^2-1;
end
1 comentario
Jan
el 13 de Nov. de 2017
You forgot to mention, when the error occurs. Do I understand correctly, that the shown code works reliable in Matlab and it fails only, if you try to compile it? Then please explain, if compiling is really needed.
Respuestas (1)
Jan
el 13 de Nov. de 2017
Editada: Jan
el 13 de Nov. de 2017
The usage of function handles is limited, if you use the coder:
- https://www.mathworks.com/help/simulink/ug/function-handle-limitations-for-code-generation.html
- https://www.mathworks.com/help/coder/ug/matlab-language-features-supported-for-code-generation.html
Did you consider these limitations? If so, how can we help you? Perhaps this helps:
3 comentarios
La pregunta está cerrada.
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!