我在matlab 2014b中定义了一个函数mystep,除了mystep(0)是一个而不是0.5之外,它与weightiside相同。 现在我想用sub替换我的函数到表达式但是不可能。功能是:
f(x) = heaviside(x) * x^2;
g(x) = subs(f(x) , heaviside(x) , mystep(x));
g(x) =
heaviside(x)
如你所见,matlab没有做任何事情,但是如果我用dirac(x)
改变mystep,那就顺利了。
g(x) = subs(f(x) , heaviside(x) , dirac(x))
g(x) =
dirac(x)
我该怎么办?有没有办法做到这一点? 任何其他帮助,如在matlab 2014b中显示改变原点重质值的方法可能是有用的。
mystep
function Y = mystep(X)
%//This function is a user-defined unit step function, which has the exact
%//properties of matlab heaviside function except for the value of function
%//at zero that is defined as 1.
Y = heaviside(X);
if Y==0.5
Y=1;
end
答案 0 :(得分:0)
现在我理解你的问题了。您实现的mystep
函数与符号数学不兼容。如果您尝试mystep(sym(x))
,您会看到它返回重物。那是因为与常量相比的符号变量总是错误的。
我看到的最佳解决方案是将此定义用于mystep
syms x
mystep(x)=heaviside(x)+1/2-abs(heaviside(x)-.5);
g(x) = subs(f(x) , heaviside(x) , mystep(x));
导致:
x^2*(heaviside(x) - abs(heaviside(x) - 1/2) + 1/2)
哪个看起来不太好但实现了预期的行为。
答案 1 :(得分:0)
我找到了答案。我必须定义一个新函数,其中mystep = round(heavyiside(x)); 端