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 类与元类的深度挖掘 I【经验】
May 06 Python
python实现决策树C4.5算法详解(在ID3基础上改进)
May 31 Python
TensorFlow数据输入的方法示例
Jun 19 Python
python对日志进行处理的实例代码
Oct 06 Python
python操作小程序云数据库实现简单的增删改查功能
Jun 06 Python
浅谈python图片处理Image和skimage的区别
Aug 04 Python
对django的User模型和四种扩展/重写方法小结
Aug 17 Python
Python 限定函数参数的类型及默认值方式
Dec 24 Python
python 6.7 编写printTable()函数表格打印(完整代码)
Mar 25 Python
Python extract及contains方法代码实例
Sep 11 Python
k-means & DBSCAN 总结
Apr 27 Python
Python利用zhdate模块实现农历日期处理
Mar 31 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
php is_file()和is_dir()用于遍历目录时用法注意事项
2010/03/02 PHP
PHP扩展程序实现守护进程
2015/04/16 PHP
Javascript - HTML的request类
2006/07/15 Javascript
js 纯数字不重复排列的另类方法
2010/07/17 Javascript
jquery更换文章内容与改变字体大小代码
2013/09/30 Javascript
通过javascript把图片转化为字符画
2013/10/24 Javascript
jquery 检测元素是否存在的实例代码
2013/11/19 Javascript
Bootstrap3.0建站教程(一)之bootstrap表单元素排版
2016/06/01 Javascript
jQuery在ie6下无法设置select选中的解决方法详解
2016/09/20 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
2016/10/01 Javascript
解决AjaxFileupload 上传时会出现连接重置的问题
2017/07/07 Javascript
JavaScript实现图片拖曳效果
2017/09/08 Javascript
Node做中转服务器转发接口
2017/10/18 Javascript
在nginx上部署vue项目(history模式)的方法
2017/12/28 Javascript
基于cropper.js封装vue实现在线图片裁剪组件功能
2018/03/01 Javascript
vue在手机中通过本机IP地址访问webApp的方法
2018/08/15 Javascript
微信小程序地图(map)组件点击(tap)获取经纬度的方法
2019/01/10 Javascript
Javascript数组方法reduce的妙用之处分享
2019/06/10 Javascript
探索JavaScript中私有成员的相关知识
2019/06/13 Javascript
15分钟学会vue项目改造成SSR(小白教程)
2019/12/17 Javascript
Python安装第三方库的3种方法
2015/06/21 Python
PyQt5创建一个新窗口的实例
2019/06/20 Python
python脚本执行CMD命令并返回结果的例子
2019/08/14 Python
Python实现直播推流效果
2019/11/26 Python
django框架单表操作之增删改实例分析
2019/12/16 Python
Django:使用filter的pk进行多值查询操作
2020/07/15 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
2020/08/17 Python
python 爬取百度文库并下载(免费文章限定)
2020/12/04 Python
Python 用__new__方法实现单例的操作
2020/12/11 Python
英国时尚运动品牌的合集:The Sports Edit
2017/12/20 全球购物
C#如何进行LDAP用户校验
2012/11/21 面试题
网友共享的几个面试题关于Java和Unix等方面的
2016/09/08 面试题
同步和异步有何异同,在什么情况下分别使用他们?
2012/12/28 面试题
党员活动日总结
2014/05/05 职场文书
保险公司客户经理岗位职责
2015/04/09 职场文书
小学生必读成语故事大全:送给暑假的你们
2019/07/09 职场文书