Есть ли способ сделать положительные значения функции прямоугольной формы? - PullRequest
1 голос
/ 29 апреля 2019

Я пытаюсь выполнить функцию прямоугольной формы для сигнала с десятью секундами со значениями от 1 до 1 и в течение 4 секунд - 0 для остальных, я смотрел другие проблемы, но они, казалось, только покрывали повторяющиеся импульсы, пока я простохочу этот единственный импульс.Я уже попробовал приведенный ниже код, но, поскольку я очень новичок в программировании, я не могу заставить его работать.Я также видел этот вопрос, но так как он дает только абсолютные значения, он не работает для меня прямоугольная последовательность импульсов в питоне

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 Ответ

1 голос
/ 29 апреля 2019

Есть два способа сделать это: длинный путь с использованием вашего функционального подхода и короткий векторный путь.Я представляю оба:

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

Short way : создайте условную маску и примените ее к вашему массиву 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...