0

我很难绘制阶跃函数。涉及的函数是 Haar 缩放函数,定义为:

ø(x) = 1 if 0 ≤ x < 1
ø(x) = 0 otherwise

我应该绘制以下函数:

f(x) = 2ø(4x) + 2ø(4x - 1) + ø(4x - 2) - ø(4x - 3)

这应该给我一个图,其中 f = 2 在区间 0 ≤ x < 0.5 上;f = 1 在区间 0.5 ≤ x < 0.75 上;f = -1 在区间 0.75 ≤ x < 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))

但是,这并没有给我一个准确的图表。那么我在这里做错了什么?任何帮助将不胜感激!

4

2 回答 2

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);
于 2013-04-07T12:46:22.993 回答
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);

因为每个段都应该用开始和结束值精确定义。

于 2013-04-07T12:46:03.463 回答