python中的矩形脉冲串 [英] rectangular pulse train in python

查看:29
本文介绍了python中的矩形脉冲串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在 python 中实现一个矩形脉冲序列.

I'm trying to implement a rectangular pulse train in python.

我搜索了scipy,没有实现的信号.http://docs.scipy.org/doc/scipy/reference/signal.html

I searched scipy and there is no signal that implements. http://docs.scipy.org/doc/scipy/reference/signal.html

在matlab中有一个名为pulstran的信号:http://es.mathworks.com/help/signal/ref/pulstran.html

In matlab there is a signal named pulstran: http://es.mathworks.com/help/signal/ref/pulstran.html

matlab 中的代码示例如下:

An example of code in matlab would be like this:

T=10; %Period
D=5; %Duration
N=10; %Number of pulses

x=linspace(0,T*N,10000);
d=[0:T:T*N];
y=pulstran(x,d,'rectpuls',D);
plot(x,y);
ylim([-1,2]);

我如何在 python 中实现这个信号?

How i could implement this signal in python?

谢谢.

推荐答案

如果您只是在寻找周期性脉冲序列,就像您给出的示例一样 - 这是一个打开 5 个周期然后关闭 5 个周期的脉冲序列:

If you're looking for just periodic pulse trains, like the example you gave - here's a pulse train that is on for 5 cycles then off for five cycles:

N = 100 # sample count
P = 10  # period
D = 5   # width of pulse
sig = np.arange(N) % P < D

给予

plot(sig)

您可以在此处将 np.arange(N) 替换为您的 linspace.请注意,这与您的代码等效,因为脉冲未居中.

You can replace np.arange(N) with your linspace here. Note this is not equivalent to your code, as the pulses are not centered.

这是一个完全可配置的脉冲序列:

And here's a fully configurable pulse train:

def rect(T):
    """create a centered rectangular pulse of width $T"""
    return lambda t: (-T/2 <= t) & (t < T/2)

def pulse_train(t, at, shape):
    """create a train of pulses over $t at times $at and shape $shape"""
    return np.sum(shape(t - at[:,np.newaxis]), axis=0)

sig = pulse_train(
    t=np.arange(100),              # time domain
    at=np.array([0, 10, 40, 80]),  # times of pulses
    shape=rect(10)                 # shape of pulse
)

给予:

我认为这是 matlab 的 pulsetran 函数比 Python 中的单行实现更令人困惑的情况之一,这可能是 scipy 不提供它的原因.

I think this is one of those cases where matlab's pulsetran function is more confusing than the one-line implementation of it in python, which is possibly why scipy does not provide it.

这篇关于python中的矩形脉冲串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆