有没有办法做一个矩形函数正值?

时间:2019-04-29 20:14:16

标签: python function numpy

我正在尝试为一个十秒的信号做一个矩形函数,其值在1到4秒之间,其余的为0,其余的为0,我看了其他问题,但它们似乎只覆盖了重复脉冲,而我只是想要这个单脉冲。我已经尝试过下面的代码,但是由于我是编程的新手,所以我似乎无法使其正常工作。我也看到了这个问题,但由于它只给出绝对值,因此对我rectangular pulse train in python

不起作用
y=np.zeros(10)
def rect(x):
    x = np.linspace(0, 10, 100)
    if 1<=x<=4:
        y=1
    else:
        y=0
    return rect(x)
f1=rect(y)
plt.plot(y,f1)

1 个答案:

答案 0 :(得分:1)

有两种方法可以执行:长距离使用函数方法和短向量化方法。我同时提出:

Longway :在for循环中调用该函数,并将y的值附加到列表中。

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 10, 100)

def rect(i):
    if 1<=i<=4:
        y=1
    else:
        y=0
    return y

f1 = []
for i in x:
    f1.append(rect(i))

plt.plot(x,f1)
plt.show()

快捷方式:创建条件遮罩并将其应用于y数组,以根据情况用0和1填充它。

x = np.linspace(0, 10, 100)
mask = (x>=1) & (x <=4)

y = np.where(mask, 1, 0)
plt.plot(x,y)
plt.show()

enter image description here