您好,登錄后才能下訂單哦!
小編給大家分享一下怎么使用python進行波形及頻譜繪制,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
1、云計算,典型應用OpenStack。2、WEB前端開發,眾多大型網站均為Python開發。3.人工智能應用,基于大數據分析和深度學習而發展出來的人工智能本質上已經無法離開python。4、系統運維工程項目,自動化運維的標配就是python+Django/flask。5、金融理財分析,量化交易,金融分析。6、大數據分析。
如下所示:
# -*- coding: UTF-8 -*- import wave import numpy as np import matplotlib.pyplot as plt # 打開wav文件 ,open返回一個的是一個Wave_read類的實例,通過調用它的方法讀取WAV文件的格式和數據。 f = wave.open(r"D:\project\REC001.wav","rb") # 讀取格式信息 # 一次性返回所有的WAV文件的格式信息,它返回的是一個組元(tuple):聲道數, 量化位數(byte單位), 采 # 樣頻率, 采樣點數, 壓縮類型, 壓縮類型的描述。wave模塊只支持非壓縮的數據,因此可以忽略最后兩個信息 params = f.getparams() [nchannels, sampwidth, framerate, nframes] = params[:4] # 讀取波形數據 # 讀取聲音數據,傳遞一個參數指定需要讀取的長度(以取樣點為單位) str_data = f.readframes(nframes) f.close() # 將波形數據轉換成數組 # 需要根據聲道數和量化單位,將讀取的二進制數據轉換為一個可以計算的數組 wave_data = np.fromstring(str_data,dtype = np.short) # 將wave_data數組改為2列,行數自動匹配。在修改shape的屬性時,需使得數組的總長度不變。 wave_data.shape = -1,2 # 轉置數據 wave_data = wave_data.T # 通過取樣點數和取樣頻率計算出每個取樣的時間。 time=np.arange(0,nframes/2)/framerate # print(params) plt.figure(1) # time 也是一個數組,與wave_data[0]或wave_data[1]配對形成系列點坐標 plt.subplot(211) plt.plot(time,wave_data[0]) plt.xlabel("time/s") plt.title('Wave') N=44100 start=0 # 開始采樣位置 df = framerate/(N-1) # 分辨率 freq = [df*n for n in range(0,N)] # N個元素 wave_data2=wave_data[0][start:start+N] c=np.fft.fft(wave_data2)*2/N # 常規顯示采樣頻率一半的頻譜 plt.subplot(212) plt.plot(freq[:round(len(freq)/2)],abs(c[:round(len(c)/2)]),'r') plt.title('Freq') plt.xlabel("Freq/Hz") plt.show()
看完了這篇文章,相信你對“怎么使用python進行波形及頻譜繪制”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。