我们知道python的支持复数,也知道复数矩阵的存在,那么我们可以把复数矩阵分离成实部和虚部吗?接下来这篇文章告诉你python怎么分离复数矩阵!

需求

在进行数字信号处理的过程中,我们往往有对短时傅里叶变换频谱(spectrogram)进行分析的需求。

常见的分析手段对应欧拉公式分为两种,要么使用模与相位的形式,要么使用实部虚部。

本文分享一个简单的将复数光谱图分解为实部与虚部以及将两个部分重新合并为一个复数矩阵的过程,以下为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))

其中librosa库为常用的音频处理库。

上述代码实现了对wavfile进行短时傅里叶变换,分离出实部虚部并重新合并的过程。

最终的输出为True, 证明了经过这些步骤过后,重构的复数矩阵与初始的光谱图是一致的。

以上就是python分离复数矩阵的全部内容了,希望能给大家一个参考,也希望大家多多支持W3Cschool

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。