python 如何将两个实数矩阵合并为一个复数矩阵


Posted in Python onMay 19, 2021

问题描述:

有时需要把两个实数矩阵,一个作为实部,一个作为虚部,合并为一个复数矩阵,该如何操作?

解决办法:

假如是在第二个维度上进行合并(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 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 相关文章推荐
从零学Python之入门(三)序列
May 25 Python
python开发之IDEL(Python GUI)的使用方法图文详解
Nov 12 Python
解决python文件字符串转列表时遇到空行的问题
Jul 09 Python
浅谈python import引入不同路径下的模块
Jul 11 Python
python读取有密码的zip压缩文件实例
Feb 08 Python
python命令行工具Click快速掌握
Jul 04 Python
python虚拟环境完美部署教程
Aug 06 Python
使用IPython或Spyder将省略号表示的内容完整输出
Apr 20 Python
Django中FilePathField字段的用法
May 21 Python
详解python with 上下文管理器
Sep 02 Python
python简单实现9宫格图片实例
Sep 03 Python
python+selenium爬取微博热搜存入Mysql的实现方法
Jan 27 Python
python使用pywinauto驱动微信客户端实现公众号爬虫
python基于tkinter实现gif录屏功能
Python 读写 Matlab Mat 格式数据的操作
May 19 #Python
python3 hdf5文件 遍历代码
May 19 #Python
Python基础之元组与文件知识总结
Python使用protobuf序列化和反序列化的实现
详解分布式系统中如何用python实现Paxos
May 18 #Python
You might like
百度地图API应用之获取用户的具体位置
2014/06/10 PHP
php递归函数三种实现方法及如何实现数字累加
2015/08/07 PHP
为你总结一些php系统类函数
2015/10/21 PHP
PHP+MySQL存储数据常见中文乱码问题小结
2016/06/13 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
jQuery 表格工具集
2010/04/25 Javascript
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
JavaScript的设计模式经典之代理模式
2016/02/24 Javascript
bootstrap输入框组代码分享
2016/06/07 Javascript
javascript鼠标滑过显示二级菜单特效
2020/11/18 Javascript
jquery实现图片平滑滚动详解
2017/03/22 jQuery
Vue列表页渲染优化详解
2017/07/24 Javascript
详解Javascript中new()到底做了些什么?
2018/03/29 Javascript
jquery插件开发模式实例详解
2019/07/20 jQuery
vue 地区选择器v-distpicker的常用功能
2019/07/23 Javascript
适合前端Vue开发童鞋的跨平台Weex的使用详解
2019/10/16 Javascript
JavaScript 实现HTML DOM增删改查操作的常见方法详解
2020/01/04 Javascript
Python内置的字符串处理函数详细整理(覆盖日常所用)
2014/08/19 Python
Python开发的十个小贴士和技巧及长常犯错误
2018/09/27 Python
Pyqt5 基本界面组件之inputDialog的使用
2019/06/25 Python
python 协程 gevent原理与用法分析
2019/11/22 Python
Django Serializer HiddenField隐藏字段实例
2020/03/31 Python
html5清空画布方法(三种)
2017/10/16 HTML / CSS
使用canvas对多图片拼合并导出图片的方法
2018/08/28 HTML / CSS
5分钟实现Canvas鼠标跟随动画背景
2019/11/18 HTML / CSS
艺龙旅行网酒店预订:国内、港澳台酒店
2018/06/26 全球购物
Puma印度官网:德国运动品牌
2019/10/06 全球购物
班组长安全职责
2014/01/05 职场文书
解除合同协议书
2014/04/17 职场文书
广播体操比赛口号
2014/06/10 职场文书
干部培训工作总结2015
2015/05/25 职场文书
经典祝酒词大全
2015/08/12 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python
MySQL大小写敏感的注意事项
2021/05/24 MySQL
详解在OpenCV中如何使用图像像素
2022/03/03 Python
Java 超详细讲解ThreadLocal类的使用
2022/04/07 Java/Android