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数据类型详解(四)字典:dict
May 12 Python
linux环境下python中MySQLdb模块的安装方法
Jun 16 Python
浅析python实现scrapy定时执行爬虫
Mar 04 Python
Python3实现购物车功能
Apr 18 Python
python requests 测试代理ip是否生效
Jul 25 Python
用Python实现筛选文件脚本的方法
Oct 27 Python
Python图像滤波处理操作示例【基于ImageFilter类】
Jan 03 Python
Python使用tkinter模块实现推箱子游戏
Oct 08 Python
python 轮询执行某函数的2种方式
May 03 Python
如何实现一个python函数装饰器(Decorator)
Oct 12 Python
快速一键生成Python爬虫请求头
Mar 04 Python
Python的代理类实现,控制访问和修改属性的权限你都了解吗
Mar 21 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按一定比例压缩图片的方法
2018/10/12 PHP
php web环境和命令行环境下查找php.ini的位置
2019/07/17 PHP
在b/s开发中经常用到的javaScript技术
2006/08/23 Javascript
javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法
2009/03/21 Javascript
JavaScript XML和string相互转化实现代码
2011/07/04 Javascript
jquery easyui combox一些实用的小方法
2013/12/25 Javascript
jquery 获取dom固定元素 添加样式的简单实例
2014/02/04 Javascript
纯js实现遮罩层效果原理分析
2014/05/27 Javascript
angularjs学习笔记之三大模块(modal,controller,view)
2015/09/26 Javascript
全面解析Bootstrap排版使用方法(文字样式)
2015/11/30 Javascript
json数据处理及数据绑定
2017/01/25 Javascript
Vuejs 组件——props数据传递的实例代码
2017/03/07 Javascript
基于vue实现多引擎搜索及关键字提示
2017/03/16 Javascript
vue分类筛选filter方法简单实例
2017/03/30 Javascript
解决node修改后需频繁手动重启的问题
2018/05/13 Javascript
Auto.js自动收取自己和好友蚂蚁森林能量脚本
2018/06/28 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
2019/08/01 Javascript
OpenLayers加载缩放控件使用方法详解
2020/09/25 Javascript
[03:40]DOTA2英雄梦之声_第01期_炼金术士
2014/06/23 DOTA
详细解析Python中__init__()方法的高级应用
2015/05/11 Python
教你用python3根据关键词爬取百度百科的内容
2016/08/18 Python
Python函数式编程
2017/07/20 Python
python opencv检测目标颜色的实例讲解
2018/04/02 Python
Python批处理删除和重命名文件夹的实例
2018/07/11 Python
在python 中实现运行多条shell命令
2019/01/07 Python
Python向excel中写入数据的方法
2019/05/05 Python
python3实现的zip格式压缩文件夹操作示例
2019/08/17 Python
基于Python实现拆分和合并GIF动态图
2019/10/22 Python
用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)
2020/06/04 Python
Python函数的迭代器与生成器的示例代码
2020/06/18 Python
matplotlib教程——强大的python作图工具库
2020/10/15 Python
化学实验员岗位职责
2013/12/28 职场文书
挂牌仪式主持词
2014/03/20 职场文书
2015年工商所工作总结
2015/05/21 职场文书
Vue全局事件总线你了解吗
2022/02/24 Vue.js
提高系统的吞吐量解决数据库重复写入问题
2022/04/23 MySQL