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创建和使用字典实例详解
Nov 01 Python
python实现进程间通信简单实例
Jul 23 Python
python根据文件大小打log日志
Oct 09 Python
python语言使用技巧分享
May 31 Python
Python Xml文件添加字节属性的方法
Mar 31 Python
python+numpy+matplotalib实现梯度下降法
Aug 31 Python
在Python中定义一个常量的方法
Nov 10 Python
Python使用sax模块解析XML文件示例
Apr 04 Python
django drf框架自带的路由及最简化的视图
Sep 10 Python
python matplotlib 绘图 和 dpi对应关系详解
Mar 14 Python
Python列表嵌套常见坑点及解决方案
Sep 30 Python
教你怎么用Python实现多路径迷宫
Apr 29 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
BBS(php & mysql)完整版(二)
2006/10/09 PHP
支持数组的ADDSLASHES的php函数
2010/02/16 PHP
php模拟js函数unescape的函数代码
2012/10/20 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
2016/11/16 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
js冒泡、捕获事件及阻止冒泡方法详细总结
2014/05/08 Javascript
jQuery中:last-child选择器用法实例
2014/12/31 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
2015/12/03 Javascript
使用OpenLayers3 添加地图鼠标右键菜单
2015/12/29 Javascript
Node.js开发者必须了解的4个JS要点
2016/02/21 Javascript
jQuery实现自动输入email、时间和域名的方法
2016/08/24 Javascript
Javascript从数组中随机取出不同元素的两种方法
2016/09/22 Javascript
基于JQuery的Ajax方法使用详解
2017/08/16 jQuery
get  post jsonp三种数据交互形式实例详解
2017/08/25 Javascript
Angular2+如何去除url中的#号详解
2017/12/20 Javascript
微信小程序自定义导航教程(兼容各种手机)
2018/12/12 Javascript
jQuery选择器之层次选择器用法实例分析
2019/02/19 jQuery
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
怎么理解wx.navigateTo的events参数使用详情
2020/05/18 Javascript
vue单应用在ios系统中实现微信分享功能操作
2020/09/07 Javascript
jQuery实现日历效果
2020/09/11 jQuery
[03:22]DSPL第一期精彩集锦:酷炫到底!
2014/11/07 DOTA
使用Python生成随机密码的示例分享
2016/02/18 Python
Python实现识别手写数字大纲
2018/01/29 Python
Python爬虫实例扒取2345天气预报
2018/03/04 Python
Python安装pycurl失败的解决方法
2018/10/15 Python
Python文件循环写入行时防止覆盖的解决方法
2018/11/09 Python
详解Python3序列赋值、序列解包
2019/05/14 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
教师推荐信范文
2013/11/24 职场文书
创建绿色社区汇报材料
2014/08/22 职场文书
2016大学生入党积极分子心得体会
2016/01/06 职场文书
redis数据结构之压缩列表
2022/03/21 Redis
CSS中float高度塌陷问题的四种解决方案
2022/04/18 HTML / CSS
服务器间如何实现文件共享
2022/05/20 Servers