python 如何將兩個實數(shù)矩陣合并為一個復(fù)數(shù)矩陣
問題描述:
有時需要把兩個實數(shù)矩陣,一個作為實部,一個作為虛部,合并為一個復(fù)數(shù)矩陣,該如何操作?
解決辦法:
假如是在第二個維度上進行合并(real: Data[:, 0, :, :] imag: Data[:, 1, :, :]),有兩種方法
第一種、
result = Data[:, 0, :, :] + 1j*Data[:, 1, :, :]
第二種、
result = 1j*Data[:, 1, :, :] result += Data[:, 0, :, :]
第二種方法更節(jié)省內(nèi)存~
補充:python numpy 分離與合并復(fù)數(shù)矩陣實部虛部的方法
在進行數(shù)字信號處理的過程中,我們往往有對短時傅里葉變換頻譜(spectrogram)進行分析的需求。
常見的分析手段對應(yīng)歐拉公式分為兩種,要么使用模與相位的形式,要么使用實部虛部。
本文分享一個簡單的將復(fù)數(shù)光譜圖分解為實部與虛部以及將兩個部分重新合并為一個復(fù)數(shù)矩陣的過程,以下為python代碼。
import numpy as np import librosa # load the original wav test_wave, _ = librosa.load("../RecFile_1_20200617_153719_Sound_Capture_DShow_5_monoOutput1.wav", sr=44100) # calculate the complex spectrogram stft spectrogram_test_wav = librosa.stft(test_wave, n_fft=735*2, win_length=735*2, hop_length=735) # calculate the real part of the spectrogram real_spectrogram = spectrogram_test_wav.real # calculate the imaginary part of the spectrogram imaginary_spectrogram = spectrogram_test_wav.imag # combine these two parts reconstruction_spectrogram = real_spectrogram + 1j * imaginary_spectrogram print(np.array_equal(spectrogram_test_wav, reconstruction_spectrogram))
其中l(wèi)ibrosa庫為常用的音頻處理庫。
上述代碼實現(xiàn)了對wavfile進行短時傅里葉變換,分離出實部虛部并重新合并的過程。
最終的輸出為True, 證明了經(jīng)過這些步驟過后,重構(gòu)的復(fù)數(shù)矩陣與初始的光譜圖是一致的。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Python+OpenCV進行卡類型及16位卡號數(shù)字的OCR功能
本文將使用Python+OpenCV實現(xiàn)模板匹配算法,以自動識別卡的類型和以及16位卡號數(shù)字,通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧2021-08-08成功解決ValueError:?Supported?target?types?are:('binary
本文給大家分享成功解決ValueError:?Supported?target?types?are:('binary',?'multiclass').?Got?'continuous'?instead.的錯誤問題,需要的朋友可以參考下2023-03-03python GUI庫圖形界面開發(fā)之PyQt5滾動條控件QScrollBar詳細使用方法與實例
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5滾動條控件QScrollBar詳細使用方法與實例,需要的朋友可以參考下2020-03-03