【问题标题】:Matlab - how to plot step functionMatlab - 如何绘制阶跃函数
【发布时间】:2013-04-07 12:24:12
【问题描述】:

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

我尝试了以下代码:

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))

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

【问题讨论】:

  • “不准确的图表”是什么意思?在什么意义上?
  • 该图给出了 f = 2 on 0
  • 您对“阶梯函数”的定义与阶梯函数的定义存在差异。通常,对于 x > 0,阶跃函数为 f(x) = 1,否则为零。您的定义为 x>1 添加了“设置为零”。您的 f(t) 符合直观定义,而不是您的定义。
  • 好的,谢谢。你有什么想法我怎么能做到这一点。我试过: f = @(t) 2*(0
  • 您不能在 Matlab 中指定像 0 &lt; 4*t &lt; 1 这样的不等式范围,因为它将首先评估 0&lt;4*t,然后将答案(0 或 1)应用于 &lt; 1 部分。您需要将其写为:0 &lt; 4*t &amp; 4*t &lt; 1.

标签: matlab plot


【解决方案1】:

您对 f 的实现只处理了一半的 phi 规范。

f = @(t) 2*(4*t > 0) + 2*(4*t > 1) + (4*t > 2) - (4*t > 3);

在每个术语中应用不等式0 &lt; X,而不是0 &lt;= X。对于X &lt; 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);

【讨论】:

  • 感谢您的意见。但是,这只给了我一条通过 f = 0 的水平线。
  • 糟糕,错字。我有phi = @(x) x&gt;=0 &amp; x&lt; 0;。现在已修复。
  • 非常感谢!我希望我也可以选择这个作为接受的答案,但是由于我已经标记了faith_k的答案,并且它们都有效,我希望没关系。非常感谢您的帮助!
【解决方案2】:

应该是:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多