我很难绘制一个阶梯函数。函数涉及的是Haar缩放函数,它定义为:
ø(x) = 1 if 0 ≤ x < 1
ø(x) = 0 otherwise
我应该绘制以下函数:
f(x) = 2ø(4x) + 2ø(4x - 1) + ø(4x - 2) - ø(4x - 3)
这应该给出一个曲线,其中在0≤x<0的区间上f = 2。 0.5;在0.5≤x<0.5的区间内f = 1。 0.75;在0.75≤x<1的区间上f = -1。 1,否则f = 0。
我尝试了以下代码:
f = @(t) 2*(4*t > 0) + 2*(4*t > 1) + (4*t > 2) - (4*t > 3);
t = linspace(-2,2,100);
stairs(t,f(t))
然而,这并没有给我一个准确的图表。那么我在这里做错了什么?任何帮助将不胜感激!
答案 0 :(得分:4)
你的f实现只涉及你的phi规范的一半。
f = @(t) 2*(4*t > 0) + 2*(4*t > 1) + (4*t > 2) - (4*t > 3);
在每个术语中应用不等式0 < X
,而不是0 <= X
。关于X < 1
不等式也没有做任何事情。
为什么不直接编写公式,而不是尝试为每个术语制作自定义版本?
phi = @(x) x >= 0 & x < 1;
f = @(x) 2*phi(4*x) + 2*phi(4*x-1) + phi(4*x - 2) - phi(4*x - 3);
答案 1 :(得分:1)
它应该是:
f = @(t) 2*(4*t > 0 & 4*t < 1) + 2*(4*t > 1 & 4*t < 2) + (4*t > 2 & 4*t < 3) - (4*t > 3);
因为应该使用起始值和结束值精确定义每个段。