在表达式中替换我的函数
substituting my function in an expression
我在 matlab 2014b 中定义了一个函数作为 mystep,它与 heaviside 相同,除了 mystep(0) 是 1 而不是 0.5。
现在我想使用 subs 将我的函数替换为表达式,但这是不可能的。函数是:
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 中更改 origin 处的 heaviside 值的方法可能会有用。
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
现在我明白你的问题了。您实现的 mystep
函数与符号数学不兼容。如果您尝试 mystep(sym(x))
,您会看到它 returns heaviside。那是因为符号变量与常量相比总是假的。
我看到的最佳解决方案是将此定义用于 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)
它看起来不太好,但实现了预期的行为。
我找到了答案。我必须定义一个新函数,其中 mystep = round(heaviside(x));
结束
我在 matlab 2014b 中定义了一个函数作为 mystep,它与 heaviside 相同,除了 mystep(0) 是 1 而不是 0.5。 现在我想使用 subs 将我的函数替换为表达式,但这是不可能的。函数是:
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 中更改 origin 处的 heaviside 值的方法可能会有用。
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
现在我明白你的问题了。您实现的 mystep
函数与符号数学不兼容。如果您尝试 mystep(sym(x))
,您会看到它 returns heaviside。那是因为符号变量与常量相比总是假的。
我看到的最佳解决方案是将此定义用于 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)
它看起来不太好,但实现了预期的行为。
我找到了答案。我必须定义一个新函数,其中 mystep = round(heaviside(x)); 结束