Chcem písať funkciu, ako je sqrt v matlab čarodejnice, či som prejsť symbol alebo odovzdať číselnú hodnotu návratu, ako je tento kód:
>> syms x;
>> y = sqrt(x)
y =
x^(1/2)
>> y = sqrt(4)
y =
2
moja funkcia je:
function [ y ] = fx(x)
if -1<=x && x<=0
y=-2;
elseif 2<=x && x<=3
y=2;
else
y=0;
end
end
v skutočnosti chcem, aby moja funkcia bola aj symbolická
odpovede:
1 pre odpoveď č. 1Môžete skontrolovať triedu svojich vstupov pomocou isnumeric
a ISA (x, "sym"), Možno budete potrebovať isfloat
a môžete tiež chcieť zistiť symbolické funkcie ISA (x, "symfun"), Takže príklad sqrt
funkcia môže vyzerať takto:
function y=sqrt(x)
if isfloat(x)
y = sqrt(x);
elseif isa(x,"sym")
y = sqrt(x); % Same but this might be something else
else
error("sort:InvalidDatatype","Input must be floating point or symbolic.");
end
Samozrejme Matlab "s sqrt
už funguje dobre pre pohyblivé čiarky asymbolické vstupy. V skutočnosti používa inú schému, ktorú by ste mohli tiež použiť: preťaženie vytvorením samostatných funkcií pre každú triedu a vložením každého do priečinka @classname (napr. @Double alebo @sym) na ceste.