首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scipy.signal.lsim和scipy.signal.step输出和使用案例

scipy.signal.lsim和scipy.signal.step输出和使用案例
EN

Stack Overflow用户
提问于 2019-07-15 00:03:10
回答 1查看 248关注 0票数 0

scipy.signal.step和scipy.signal.lsim的输出不是我想要的,所以我一定是用错了。lsim的输出实际上相当接近,但振幅衰减了许多个数量级。我的问题是线性系统对于零输入不能是非零的吗?我的初始条件是1.65V (我正在模拟一个运算放大器电路),而在实际生活中,在阶跃发生之前,电路的长时间>>时间常数的输入是1.65V。

我已经绘制了所有波形,并放大了lsim本身的输出,以查看其具有大致准确的形状。

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from scipy import signal

time = np.linspace(0,1e-3, num=100)
fc = 2e3
tau = 1/(2*np.pi*fc)
gain = .7
step_amplitude=.4
initial = 1.65
input_step = [1.65 for i in range(20)] + [2 for i in range(80)]

ideal_ckt = signal.ZerosPolesGain([],[-3e3*2*np.pi],[gain])
t, ideal_step = signal.step(ideal_ckt, X0=[1.65],T= time)
t, output, x = signal.lsim(ideal_ckt, input_step, T=time)

should_be = step_amplitude*gain*(1-np.exp(-(time)/tau)) + initial
should_be[20:] = should_be[0:80]
should_be[0:20] = 1.65

fig, ax = plt.subplots()
ax.plot(time, input_step, label='input')
ax.plot(t, output, label='lsim')
ax.plot(time, ideal_step, label='signal.step')
ax.plot(time, should_be, label='should_be')
ax.set_xlabel('time')
ax.set_ylabel('Voltage')
ax.legend()
fig.show()

我希望看到一个很好的RC式的一阶指数上升到初始值+输入阶跃幅度*增益的稳态值。我希望should_beideal_stepoutput的曲线看起来都一样。他们为什么不呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-16 07:31:07

系统应定义为:

代码语言:javascript
复制
ideal_ckt = signal.ZerosPolesGain([],[-p1*1],[gain*p1])

由于文档描述表单的方式。这解释了大的关注度: 1/(s/p+1)是规范化的形式。但是scipy代码的形式是1/(s+p)。要从第一种形式转到第二种形式,您可以使用p/(s+p)结束

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57029002

复制
相关文章

相似问题

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