PULSe in Matlab Symbolic
Afficher commentaires plus anciens
Hi,
I have a approximation of a rectangular function:
function current=pulse(t)
if (t-2.5*round(t/2.5-0.5))<=0.2
current=0.001;
else
current=0;
end
end
Then I need t as symbolic:
syms t;
pulse(t);
BUT I get this ERROR:
Conversion to logical from sym is not possible.
Error in ie1 (line 6)
if (t-2.5*round(t/2.5-0.5))<=0.2
Hope somebody can help. Thank you!
Réponses (1)
Walter Roberson
le 7 Juin 2012
0 votes
You will have to construct a piecewise function. See http://www.mathworks.com/help/toolbox/mupad/stdlib/piecewis.html.
Note that the MuPAD piecewise() function does not have a MATLAB interface, so you will need to use evalin(symengine) or feval(symengine) in order to create the object.
4 commentaires
John Miller
le 7 Juin 2012
Walter Roberson
le 7 Juin 2012
pw = evalin(symengine, 'piecewise([x > 0 and x < 1, 1], [Otherwise, 0])');
John Miller
le 7 Juin 2012
Walter Roberson
le 7 Juin 2012
pulsefun = matlabFunction(pulse);
fsolve( @(x) x(1) + pulsefun(x(2)), x0 )
Catégories
En savoir plus sur Conversion dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!