真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python繪制信號(hào)函數(shù) python信號(hào)處理算法庫(kù)

怎么利用python繪制sse值與k值的函數(shù)圖像

可以使用Python計(jì)算機(jī)圖形學(xué)庫(kù)matplotlib來(lái)繪制SSE值與K值的函數(shù)圖像,具體步驟如下:

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了靈丘免費(fèi)建站歡迎大家使用!

1. 導(dǎo)入必要的庫(kù),例如matplotlib,numpy,scipy等。

2. 使用numpy和scipy生成k值與SSE值之間的矩陣,并將其存儲(chǔ)到列表中。

3. 使用matplotlib繪制輸入矩陣中包含的散點(diǎn)圖,即k值與SSE值的函數(shù)圖像。

python函數(shù)圖的繪制

pre

import numpy as np

import matplotlib.pyplot as plt

from matplotlib.patches import Polygon

def func(x):

return -(x-2)*(x-8)+40

x=np.linspace(0,10)

y=func(x)

fig,ax = plt.subplots()

plt.plot(x,y,'r',linewidth=2)

plt.ylim(ymin=20)

a=2

b=9

ax.set_xticks([a,b])

ax.set_xticklabels(['$a$','$b$'])

ax.set_yticks([])

plt.figtext(0.9,0.05,'$x$')

plt.figtext(0.1,0.9,'$y$')

ix=np.linspace(a,b)

iy=func(ix)

ixy=zip(ix,iy)

verts=[(a,0)]+list(ixy)+[(b,0)]

poly = Polygon(verts,facecolor='0.9',edgecolor='0.5')

ax.add_patch(poly)

x_math=(a+b)*0.5

y_math=35

plt.text(x_math,y_math,r"$\int_a^b(-(x-2)*(x-8)+40)dx$",horizontalalignment='center',size=12)

plt.show()

/pre

如何使用python處理心音信號(hào)

在了解了Linux的信號(hào)基礎(chǔ)之 后,Python標(biāo)準(zhǔn)庫(kù)中的signal包就很容易學(xué)習(xí)和理解。signal包負(fù)責(zé)在Python程序內(nèi)部處理信號(hào),典型的操作包括預(yù)設(shè)信號(hào)處理函數(shù),暫 停并等待信號(hào),以及定時(shí)發(fā)出SIGALRM等。要注意,signal包主要是針對(duì)UNIX平臺(tái)(比如Linux, MAC OS),而Windows內(nèi)核中由于對(duì)信號(hào)機(jī)制的支持不充分,所以在Windows上的Python不能發(fā)揮信號(hào)系統(tǒng)的功能。

信號(hào)(signal)-- 進(jìn)程之間通訊的方式,是一種軟件中斷。一個(gè)進(jìn)程一旦接收到信號(hào)就會(huì)打斷原來(lái)的程序執(zhí)行流程來(lái)處理信號(hào)。

定義信號(hào)名

signal包定義了各個(gè)信號(hào)名及其對(duì)應(yīng)的整數(shù),比如:

import signal

print(signal.SIGABRT)

print(signal.SIG_DFL)

Python所用的信號(hào)名與Linux一致,可以通過(guò)$ man 7 signal 查詢

預(yù)設(shè)信號(hào)處理函數(shù)

signal包的核心是使用signal.signal()函數(shù)來(lái)預(yù)設(shè)(register)信號(hào)處理函數(shù),如下所示:

singnal.signal(signalnum, handler)

signalnum為某個(gè)信號(hào),handler為該信號(hào)的處理函數(shù)。我們?cè)谛盘?hào)基礎(chǔ)里提到,進(jìn)程可以無(wú)視信號(hào),可以采取默認(rèn)操作,還可以自定義操作。當(dāng)handler為signal.SIG_IGN時(shí),信號(hào)被無(wú)視(ignore)。當(dāng)handler為singal.SIG_DFL,進(jìn)程采取默認(rèn)操作(default)。當(dāng)handler為一個(gè)函數(shù)名時(shí),進(jìn)程采取函數(shù)中定義的操作。

import signal

# Define signal handler function

def myHandler(signum, frame):

print('I received: ', signum)

# register signal.SIGTSTP's handler

signal.signal(signal.SIGTSTP, myHandler)

signal.pause()

print('End of Signal Demo')

# 有問(wèn)題待測(cè)試

在主程序中,我們首先使用signal.signal()函數(shù)來(lái)預(yù)設(shè)信號(hào)處理函數(shù)。然后我們執(zhí)行signal.pause()來(lái)讓該進(jìn)程暫停以等待信號(hào), 以等待信號(hào)。當(dāng)信號(hào)SIGUSR1被傳遞給該進(jìn)程時(shí),進(jìn)程從暫停中恢復(fù),并根據(jù)預(yù)設(shè),執(zhí)行SIGTSTP的信號(hào)處理函數(shù)myHandler()。 myHandler的兩個(gè)參數(shù)一個(gè)用來(lái)識(shí)別信號(hào)(signum),另一個(gè)用來(lái)獲得信號(hào)發(fā)生時(shí),進(jìn)程棧的狀況(stack frame)。這兩個(gè)參數(shù)都是由signal.singnal()函數(shù)來(lái)傳遞的。

上面的程序可以保存在一個(gè)文件中(比如test.py)。我們使用如下方法運(yùn)行:

$python test.py

以便讓進(jìn)程運(yùn)行。當(dāng)程序運(yùn)行到signal.pause()的時(shí)候,進(jìn)程暫停并等待信號(hào)。此時(shí),通過(guò)按下CTRL+Z向該進(jìn)程發(fā)送SIGTSTP信號(hào)。我們可以看到,進(jìn)程執(zhí)行了myHandle()函數(shù), 隨后返回主程序,繼續(xù)執(zhí)行。(當(dāng)然,也可以用$ps查詢process ID, 再使用$kill來(lái)發(fā)出信號(hào)。)

(進(jìn)程并不一定要使用signal.pause()暫停以等待信號(hào),它也可以在進(jìn)行工作中接受信號(hào),比如將上面的signal.pause()改為一個(gè)需要長(zhǎng)時(shí)間工作的循環(huán)。)

我們可以根據(jù)自己的需要更改myHandler()中的操作,以針對(duì)不同的信號(hào)實(shí)現(xiàn)個(gè)性化的處理。

定時(shí)發(fā)出SIGALRM信號(hào)

一個(gè)有用的函數(shù)是signal.alarm(),它被用于在一定時(shí)間之后,向進(jìn)程自身發(fā)送SIGALRM信號(hào):

import signal

# Define signal handler function

def myHandler(signum, frame):

print("Now, it's the time")

exit()

# register signal.SIGALRM's handler

signal.signal(signal.SIGALRM, myHandler)

signal.alarm(5)

while True:

print('not yet')

我們這里用了一個(gè)無(wú)限循環(huán)以便讓進(jìn)程持續(xù)運(yùn)行。在signal.alarm()執(zhí)行5秒之后,進(jìn)程將向自己發(fā)出SIGALRM信號(hào),隨后,信號(hào)處理函數(shù)myHandler開始執(zhí)行。

發(fā)送信號(hào)

signal包的核心是設(shè)置信號(hào)處理函數(shù)。除了signal.alarm()向自身發(fā)送信號(hào)之外,并沒(méi)有其他發(fā)送信號(hào)的功能。但在os包中,有類似于linux的kill命令的函數(shù),分別為

os.kill(pid, sid)

os.killpg(pgid, sid)

分別向進(jìn)程和進(jìn)程組(見(jiàn)Linux進(jìn)程關(guān)系)發(fā)送信號(hào)。sid為信號(hào)所對(duì)應(yīng)的整數(shù)或者singal.SIG*。

實(shí)際上signal, pause,kill和alarm都是Linux應(yīng)用編程中常見(jiàn)的C庫(kù)函數(shù),在這里,我們只不過(guò)是用Python語(yǔ)言來(lái)實(shí)現(xiàn)了一下。實(shí)際上,Python 的解釋器是使用C語(yǔ)言來(lái)編寫的,所以有此相似性也并不意外。此外,在Python 3.4中,signal包被增強(qiáng),信號(hào)阻塞等功能被加入到該包中。我們暫時(shí)不深入到該包中。

總結(jié)

signal.SIG*

signal.signal()

signal.pause()

signal.alarm()


分享標(biāo)題:python繪制信號(hào)函數(shù) python信號(hào)處理算法庫(kù)
路徑分享:http://weahome.cn/article/dogocpe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部