音频处理七:(极坐标转换)
程序設計七:極坐標轉換
一:需求分析
? 在數學中,極坐標系是一個二維坐標系統。該坐標系統中的點由一個夾角和一段相對中心點——極點(相當于我們較為熟知的直角坐標系中的原點)的距離來表示。極坐標系的應用領域十分廣泛,包括數學、物理、工程、航海以及機器人領域。在兩點間的關系用夾角和距離很容易表示時,極坐標系便顯得尤為有用;而在平面直角坐標系中,這樣的關系就只能使用三角函數來表示。對于很多類型的曲線,極坐標方程是最簡單的表達形式,甚至對于某些曲線來說,只有極坐標方程能夠表示。
wavtxtifft -i fft.txt -o polor.txt二:參考知識
1.本地.txt信息
fft_BAC009S0003W0121.txt BAC009S0003W0121.wav語音進行FFT變換后的取值2.坐標轉換后
fft_polar.txt 是fft_BAC009S0003W0121.txt復數轉換為極坐標輸出(半徑 角度)三:python代碼
求取半徑
r=y2+x2r=\sqrt{y^{2}+x^{2}} r=y2+x2?
r = np.sqrt(complex_real ** 2 + complex_imag ** 2)求取角度
tan?θ=yx\tan \theta=\frac{y}{x} tanθ=xy?
完整代碼
holiday07.py import numpy as np import sys import getopt ''' 將復數形式的FFT數據轉換為極坐標形式 ''' def main(argv):try:opts, args = getopt.getopt(argv, "-h-i:-o:", ["help", "input=", "output="])except getopt.GetoptError:print('將讀取到的FFT數據,轉換為極坐標形式')print('python holiday07.py -i fft_BAC009S0003W0121.txt -o fft_polar.txt')sys.exit(2)# 處理 返回值options是以元組為元素的列表。for opt, arg in opts:if opt in ("-h", "--help"):print("音頻數據轉換到極坐標")print('將讀取到的FFT數據,轉換為極坐標形式')print('python holiday07.py -i fft_BAC009S0003W0121.txt -o fft_polar.txt')sys.exit()elif opt in ("-i", "--input"):input = argelif opt in ("-o", "--output"):output = arg# fft_BAC009S0003W0121.txtcomplex_array = np.loadtxt(input, dtype=np.complex)length = len(complex_array) # 求Nfile = open(output, 'w')for index in range(length):complex_real = np.real(complex_array[index])complex_imag = np.imag(complex_array[index])r = np.sqrt(complex_real ** 2 + complex_imag ** 2)angle = np.arctan(complex_imag / complex_real ) # 默認產生的是弧度angle = angle * (180 / np.pi) # 弧度轉換為角度# angle = np.arctan(complex_imag / complex_real )s = '(' + str(r) + ' ' + str(angle) + ')' + '\n'file.write(s)file.close()if __name__ == "__main__":# sys.argv[1:]為要處理的參數列表,sys.argv[0]為腳本名,所以用sys.argv[1:]過濾掉腳本名。main(sys.argv[1:])#python holiday07.py -i fft_BAC009S0003W0121.txt -o fft_polar.txt四:實現結果
1.請求幫助
python holiday07.py -h 音頻數據轉換到極坐標 將讀取到的FFT數據,轉換為極坐標形式 python holiday07.py -i fft_BAC009S0003W0121.txt -o fft_polar.txt2.極坐標轉換
- -i 輸入FFT數據
- -o 極坐標數據
五:結果顯示及分析
1.結果顯示
fft_polar.txt 是fft_BAC009S0003W0121.txt復數轉換為極坐標輸出(半徑 角度)
2.結果比對
根據公式可以反算出原始數據,以其中第二行數據(384.47795984237615 -46.14453170047742)為例
x=ρcos?θx=\rho \cos \theta x=ρcosθ
y=ρsin?θy=\rho \sin \theta y=ρsinθ
x=384.47795984237615 *cos(-46.14453170047742)=266.38231
y=384.47795984237615*sin(-46.14453170047742)=-277.2431
原始數據為:
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的音频处理七:(极坐标转换)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 音频处理六:(音频的反FFT)
- 下一篇: 音频处理八:(MFCC 的计算)