在Matlab中,sym('x')和sym('1-x')之间的差异是什么?

时间:2016-05-10 13:03:39

标签: matlab function compiler-errors symbolic-math

我定义了以下功能:

function y = pos(c)
% function outputs the maximum of c and 0 
%ie. pos(c)=0 if c is negative, and pos(c)=c if c is positive
if isa(c,'sym')
    y=sym(strcat('pos(',c,')'));
elseif isa(c,'double')
    y=max(c,0);
else
    y='not defined';
end

如果输入sym('x')形式的符号,它可以正常工作:

>> pos(sym('x'))

ans =

pos(x) 

但是,如果我将它应用于sym('1-x')形式的符号,我会收到错误:

>> pos(sym('1-x'))
In an assignment  A(:) = B, the number of elements in A and B must be the same.

Error in strcat (line 94)
        s(pos:pos+len-1) = str;

Error in pos (line 6)
    y=sym(strcat('pos(',c,')'));

这是为什么?我假设sym('x')和sym('1-x')的性质有所不同?

1 个答案:

答案 0 :(得分:0)

使用字符串操作不是替换变量的好主意。

为相关部分提供替代方案:

if isa(c,'sym')
    %create a symbolic function pos
    f=symfun(sym('pos(h)'),sym('h'))
    %substitute the parameters
    y=f(c)
elseif