📜  矩形函数 numpy - Python (1)

📅  最后修改于: 2023-12-03 15:11:23.161000             🧑  作者: Mango

Numpy中的矩形函数介绍

Numpy是Python中基础的数值计算库,提供了众多方便的计算函数,其中矩形函数是其中的一类。矩形函数是一个矩形形状的函数,其值在矩形内为1,在矩形外为0。本文将为您介绍Numpy中常见的四种矩形函数。

均匀矩形函数

均匀矩形函数在给定的范围内返回常量值 val。它通常在信号处理中使用。

import numpy as np
import matplotlib.pyplot as plt

# 创建均匀矩形函数
def uniform_rect(t, t0, width, val):
    if abs(t - t0) < width/2:
        return val
    else:
        return 0

t = np.linspace(-10, 10, 1000)
rect = np.vectorize(uniform_rect)
y = rect(t, 0, 2, 1)

plt.plot(t, y)
plt.xlabel("Time")
plt.ylabel("Amplitude")
plt.title("Uniform Rectangular Function")
plt.ylim(-0.2, 1.2)
plt.show()

uniform_rectangular_function

带限矩形函数

带限矩形函数与均匀矩形函数类似,但在给定范围外返回0,而不是与0临近的小值。它在带限信号的数字处理中经常使用。

import numpy as np
import matplotlib.pyplot as plt

# 创建带限矩形函数
def limited_rect(t, t1, t2, val):
    if t1 <= t <= t2:
        return val
    else:
        return 0

t = np.linspace(-10, 10, 1000)
rect = np.vectorize(limited_rect)
y = rect(t, -2, 2, 1)

plt.plot(t, y)
plt.xlabel("Time")
plt.ylabel("Amplitude")
plt.title("Limited Rectangular Function")
plt.ylim(-0.2, 1.2)
plt.show()

limited_rectangular_function

带倾斜矩形函数

带倾斜矩形函数是根据给定的斜率线性地将矩形的值从0线性增加到1。它经常在数字滤波器的设计中使用。

import numpy as np
import matplotlib.pyplot as plt

# 创建带倾斜矩形函数
def slope_rect(t, t1, t2, slope):
    if t <= t1:
        return 0
    elif t1 < t <= t2:
        return slope * (t - t1)
    else:
        return 1 - slope * (t - t2)

t = np.linspace(-5, 5, 1000)
rect = np.vectorize(slope_rect)
y = rect(t, -2, 2, 0.5)

plt.plot(t, y)
plt.xlabel("Time")
plt.ylabel("Amplitude")
plt.title("Slope Rectangular Function")
plt.ylim(-0.2, 1.2)
plt.show()

slope_rectangular_function

带窗矩形函数

带窗矩形函数将矩形的值通过一个窗函数进行平滑过渡。窗函数通常是高斯函数,但也可以是其他基函数。它经常在数字滤波器和信号处理中使用。

import numpy as np
import matplotlib.pyplot as plt
from scipy import signal

# 创建带窗矩形函数
def windowed_rect(t, t1, t2, window):
    if t1 <= t <= t2:
        return window(t - (t1 + t2)/2)
    else:
        return 0

t = np.linspace(-5, 5, 1000)
rect = np.vectorize(windowed_rect)
window = signal.gaussian(100, std=5)
y = rect(t, -2, 2, lambda t: signal.gaussian(len(window), std=5)[int(len(window)/2 + t*(len(window)-1)/4)])

plt.plot(t, y)
plt.xlabel("Time")
plt.ylabel("Amplitude")
plt.title("Windowed Rectangular Function")
plt.ylim(-0.2, 1.2)
plt.show()

windowed_rectangular_function

以上便是Numpy中常用的矩形函数介绍,希望对您有所帮助。