首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用matplotlib绘制此步骤函数?

如何使用matplotlib绘制此步骤函数?
EN

Stack Overflow用户
提问于 2015-12-02 09:05:01
回答 1查看 137关注 0票数 0

如何在matplotlib上绘制以下函数:

对于[n,n+1]中的所有区间t,n偶数的f(t)=1和n奇数的f(t)=-1。这基本上是一个step函数,f(t)=1从0到1,f(t)=-1从1到2,f(t)=1从2到3,f(t)=-1从3到4,等等。

到目前为止,这是我的代码:

代码语言:javascript
复制
t = arange(0,12)

def f(t):
    if t%2 == 0:
        for t in range(t,t+1):
            f = 1
        if t%2 != 0:
            for t in range(t,t+1):
                f = -1

这是这个代码的过程:

  1. 定义t在0到12之间。
  2. 定义函数f(t)
  3. 如果t是偶数整数,则使用该语句,因此它将考虑t=0,2,4,6,8,10,12
  4. 使用for循环可以为每个整数定义f=1
  5. 对t的奇数值重复。

您能看到这段代码有什么根本问题吗?我让事情变得复杂了吗?

当我试图用

代码语言:javascript
复制
matplotlib.pyplot.plot(t,f,'b-')
matplotlib.pyplot.show()

我得到一个ValueError,上面写着"x和y必须有相同的第一维“。

这里出什么问题了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-02 10:08:31

可以使用numpy.repeat将数组t中的元素加倍,并使用1 - 2 * (t%2)构建(-1,1)模式

代码语言:javascript
复制
t = np.arange(13)
f = np.repeat(1 - 2 * (t%2), 2)[:-1]
t = np.repeat(t, 2)[1:]

In [6]: t
Out[6]: 
array([ 0,  1,  1,  2,  2,  3,  3,  4,  4,  5,  5,  6,  6,  7,  7,  8,  8,
        9,  9, 10, 10, 11, 11, 12, 12])

In [7]: f
Out[7]: 
array([ 1,  1, -1, -1,  1,  1, -1, -1,  1,  1, -1, -1,  1,  1, -1, -1,  1,
        1, -1, -1,  1,  1, -1, -1, 1])

也许更容易的是:

代码语言:javascript
复制
In  [8]: n = 12
In  [9]: t = np.repeat(np.arange(n+1), 2)[1:-1]
In [10]: f = np.array([1,1,-1,-1]*(n//2))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34038629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档