日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python信號分析 | 信號運算

系統(tǒng) 2009 0

1、連續(xù)信號的相加與相乘
在MATLAB和Python中,連續(xù)信號的相加、相減和相乘都是用符號“+”“-”“*”實現(xiàn)的。
Python代碼如下:

            
              """
    連續(xù)信號相加和相乘
"""
import numpy as np
import matplotlib.pyplot as plt

t = np.linspace(0,2,200)
f1 = np.exp(-3*t)
f2 = np.sin(4*np.pi*t)
plt.subplot(221)
plt.ylim(-1,2)
plt.title(u'f1')
plt.plot(t,f1)
plt.subplot(222)
plt.title(u'f2')
plt.plot(t,f2)
plt.subplot(223)
plt.title(u'f3=f1+f2')
plt.plot(t,f1+f2)
plt.subplot(224)
plt.title(u'f4=f1*f2')
plt.plot(t,f1*f2)
plt.show()

            
          

運行結果:
Python信號分析 | 信號運算_第1張圖片
2、序列的相加與相乘
在MATLAB和Python中,序列的相加和相乘運算不能通過符號運算來實現(xiàn),必須通過向量表示的方法來實現(xiàn)。且參加運算的兩個序列向量要有相同的維數(shù)。
Python代碼如下:

            
              """
    序列的相加和相乘
"""
import numpy as np
import matplotlib.pyplot as plt
n1=np.arange(-2,3)
f1=[2,0,0,1,6]
n2=np.arange(0,6)
f2=[1,2,4,5,7,8]

n=np.arange(np.min([np.min(n1),np.min(n2)]),np.max([np.max(n1),np.max(n2)])+1)
s1=np.zeros(np.size(n),np.int)
s2=np.zeros(np.size(n),np.int)
ln=list(n)
s1[ln.index(n1[0]):ln.index(n1[0])+np.size(n1)]=f1
s2[ln.index(n2[0]):ln.index(n2[0])+np.size(n2)]=f2

x=s1+s2
y=s1*s2

plt.subplot(221)
plt.title(u'f1')
plt.stem(n1,f1)
plt.subplot(222)
plt.title(u'f2')
plt.stem(n2,f2)
plt.subplot(223)
plt.title(u'f3=f1+f2')
plt.stem(n,x)
plt.subplot(224)
plt.title(u'f4=f1*f2')
plt.stem(n,y)
plt.show()

            
          

運行結果:
Python信號分析 | 信號運算_第2張圖片
3、序列的差分與部分和
在MATLAB中,用diff函數(shù)計算序列相鄰元素的差分,用sum函數(shù)實現(xiàn)部分和。
Python與之類似。
Python代碼如下:

            
              """
    序列的差分與部分和
"""
import numpy as np
n=np.arange(0,10)
f=[1,2,3,4,5,6,7,8,9,10]
fn=np.diff(f)
print('fn=',fn)
y=np.sum(f)
print('y=',y)

            
          

運行結果:
fn= [1 1 1 1 1 1 1 1 1]
y= 55

4、連續(xù)信號的微積分
(1)在MATLAB中,
微分:y=diff(ft)
不定積分:y=int(ft)
定積分:quad(‘function_name’,a,b) 其中為被積函數(shù)名,a與b為指定積分區(qū)間。
(2)在Python中,
微分:diff函數(shù)
積分:integrate函數(shù)
Python代碼如下:

            
              """
    連續(xù)信號的微積分
"""
from sympy import *
x = symbols('x')
y=diff(exp(-3*x),x)
h=integrate(exp(-3*x),x)
plot(y,xlim=[-1,1],ylim=[-10,0.1],ylabel='',title='微分')
plot(h,xlim=[-2,1],ylim=[-10,0.1],ylabel='',title='積分')

            
          

運行結果:
Python信號分析 | 信號運算_第3張圖片
Python信號分析 | 信號運算_第4張圖片

5、離散信號的卷積和
在MATLAB中用conv函數(shù)來求離散信號的卷積和,調用格式為:
y=conv(f1,f2)
在Python中用convolve函數(shù)來求解離散信號卷積和,調用格式為:
convolve(a,v,mode=’ ')
mode默認為“full”,該項可以省略。
Python代碼如下:

            
              """
    離散信號的卷積和
"""
import numpy as np
import matplotlib.pyplot as plt
n1=np.arange(0,4)
x1=[1,2,4,5]
n2=np.arange(0,3)
x2=[1,2,1]
n=np.arange(0,np.size(n1)+np.size(n2)-1)
f=np.convolve(x1,x2)
plt.stem(n,f)
plt.show()

            
          

運行結果:
Python信號分析 | 信號運算_第5張圖片

6、連續(xù)信號的卷積和
MATLAB中應用conv函數(shù)近似計算信號的卷積積分,Python中用convolve函數(shù)近似計算。
Python代碼如下:

            
              """
    連續(xù)信號的卷積積分
"""
import numpy as np
import matplotlib.pyplot as plt
def unit(t):
    r=np.where(t>0.0,1.0,0.0)
    return r
def fconv(f1,f2,t1,t2):
    d=0.01
    f=np.convolve(f1,f2)
    f=f*d
    ts=t1[0]+t2[0]
    l=np.size(f1)+np.size(f2)-1
    t=np.linspace(ts,ts+l*d,l)
    return t,f

t1=np.linspace(-1,3,400)
f1=unit(t1)-unit(t1-2)
t2=t1
f2=np.exp(-3*t2)*unit(t2)
[t,f]=fconv(f1,f2,t1,t2)
print(np.max(f))
plt.subplot(221)
plt.title(u'f1')
plt.plot(t1,f1)
plt.subplot(222)
plt.title(u'f2')
plt.plot(t2,f2)
plt.subplot(212)
plt.title(u'卷積')
plt.plot(t,f)
plt.show()

            
          

運行結果:
Python信號分析 | 信號運算_第6張圖片


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 山东省| 剑川县| 三门峡市| 黔江区| 信阳市| 卓资县| 黔南| 泽州县| 吉首市| 县级市| 安丘市| 临澧县| 梁平县| 徐闻县| 临夏市| 莫力| 福贡县| 博罗县| 闵行区| 普兰店市| 藁城市| 谢通门县| 嘉黎县| 浠水县| 宜良县| 禹城市| 东丰县| 南乐县| 石泉县| 鄂伦春自治旗| 灵川县| 若羌县| 大石桥市| 江西省| 精河县| 望谟县| 新疆| 福鼎市| 嘉禾县| 佛冈县| 泌阳县|