Matlab - 如何绘制步骤函数

时间:2013-04-07 12:24:13

标签: matlab plot

我很难绘制一个阶梯函数。函数涉及的是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))

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

2 个答案:

答案 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);

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