如何在matlab中定义符号和数字函数

时间:2013-11-10 16:45:39

标签: matlab

我想在matlab中编写像sqrt这样的函数,无论我是传递符号还是传递数字返回值,如下代码:

>> syms x;
>> y = sqrt(x)

y =

x^(1/2)

>> y = sqrt(4)

y =

     2

我的职责是:

function [ y ] = fx(x)

    if -1<=x && x<=0
        y=-2;
    elseif 2<=x && x<=3
        y=2;
    else
        y=0;
    end
end

实际上我希望我的功能是符号也是数字

1 个答案:

答案 0 :(得分:1)

您可以使用isnumericisa(x,'sym')查看输入的类别。您可能还需要isfloat,并且您可能还希望使用isa(x,'symfun')检测符号函数。因此,示例sqrt函数可能如下所示:

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

当然,Matlab的sqrt已经适用于浮点和符号输入。它实际上使用了一个你也可以使用的不同方案:通过为每个类创建单独的函数并将每个函数放在路径上的@classname(例如@double或@sym)文件夹中进行重载。