python 如何将两个实数矩阵合并为一个复数矩阵
有时需要把两个实数矩阵,一个作为实部,一个作为虚部,合并为一个复数矩阵,该如何操作?
解决办法:假如是在第二个维度上进行合并(real: Data[:, 0, :, :] imag: Data[:, 1, :, :]),有两种方法
第一种、result = Data[:, 0, :, :] + 1j*Data[:, 1, :, :]第二种、
result = 1j*Data[:, 1, :, :]result += Data[:, 0, :, :]
第二种方法更节省内存~
补充:python numpy 分离与合并复数矩阵实部虚部的方法
在进行数字信号处理的过程中,我们往往有对短时傅里叶变换频谱(spectrogram)进行分析的需求。
常见的分析手段对应欧拉公式分为两种,要么使用模与相位的形式,要么使用实部虚部。
本文分享一个简单的将复数光谱图分解为实部与虚部以及将两个部分重新合并为一个复数矩阵的过程,以下为python代码。
import numpy as npimport librosa# load the original wavtest_wave, _ = librosa.load('../RecFile_1_20200617_153719_Sound_Capture_DShow_5_monoOutput1.wav', sr=44100)# calculate the complex spectrogram stftspectrogram_test_wav = librosa.stft(test_wave, n_fft=735*2, win_length=735*2, hop_length=735)# calculate the real part of the spectrogramreal_spectrogram = spectrogram_test_wav.real# calculate the imaginary part of the spectrogramimaginary_spectrogram = spectrogram_test_wav.imag# combine these two partsreconstruction_spectrogram = real_spectrogram + 1j * imaginary_spectrogramprint(np.array_equal(spectrogram_test_wav, reconstruction_spectrogram))
其中librosa库为常用的音频处理库。
上述代码实现了对wavfile进行短时傅里叶变换,分离出实部虚部并重新合并的过程。
最终的输出为True, 证明了经过这些步骤过后,重构的复数矩阵与初始的光谱图是一致的。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持好吧啦网。
相关文章:
1. Idea+maven搭建SSH(struts2+hibernate5+spring5)环境的方法步骤2. 小 200 行 Python 代码制作一个换脸程序3. Springboot 如何实现filter拦截token验证和跨域4. ASP中解决“对象关闭时,不允许操作。”的诡异问题……5. springboot log4j2不能打印框架错误日志的解决方案6. 得到XML文档大小的方法7. asp知识整理笔记4(问答模式)8. 原生Js实现的画廊功能9. 无线标记语言(WML)基础之WMLScript 基础第1/2页10. Docker安装、创建镜像、加载并运行NodeJS程序的详细过程

网公网安备