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制作简单的朴素基数估计器的教程
Apr 01 Python
python入门基础之用户输入与模块初认识
Nov 14 Python
Python获取当前页面内所有链接的四种方法对比分析
Aug 19 Python
Python字典数据对象拆分的简单实现方法
Dec 05 Python
python实现遍历文件夹修改文件后缀
Aug 28 Python
python版本单链表实现代码
Sep 28 Python
python3实现二叉树的遍历与递归算法解析(小结)
Jul 03 Python
Django 大文件下载实现过程解析
Aug 01 Python
pytorch forward两个参数实例
Jan 17 Python
pytorch实现从本地加载 .pth 格式模型
Feb 14 Python
如何使用pycharm连接Databricks的步骤详解
Sep 23 Python
python爬虫 requests-html的使用
Nov 30 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初学者头疼问题总结
2006/07/08 PHP
php 删除无限级目录与文件代码共享
2008/11/22 PHP
创建数据库php代码 用PHP写出自己的BLOG系统
2010/04/12 PHP
PHP大批量插入数据库的3种方法和速度对比
2014/07/08 PHP
PHP的Yii框架中过滤器相关的使用总结
2016/03/29 PHP
PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解
2019/06/03 PHP
解决laravel中日志权限莫名变成了root的问题
2019/10/17 PHP
PHP Trait功能与用法实例分析
2020/06/03 PHP
javaScript 判断字符串是否为数字的简单方法
2009/07/25 Javascript
JQuery操作表格(隔行着色,高亮显示,筛选数据)
2012/02/23 Javascript
JQuery中属性过滤选择器用法实例分析
2015/05/18 Javascript
详解JavaScript数组的操作大全
2015/10/19 Javascript
第三篇Bootstrap网格基础
2016/06/21 Javascript
jquery插件锦集【推荐】
2016/12/16 Javascript
Vue项目中如何引入icon图标
2018/03/28 Javascript
Javasript设计模式之链式调用详解
2018/04/26 Javascript
微信小程序实现弹出层效果
2020/05/26 Javascript
详解VS Code使用之Vue工程配置format代码格式化
2019/03/20 Javascript
vue中使用vee-validator完成表单校验方案
2019/11/01 Javascript
vue实现element表格里表头信息提示功能(推荐)
2019/11/20 Javascript
如何将Node.js中的回调转换为Promise
2020/11/10 Javascript
[55:25]2018DOTA2亚洲邀请赛3月29日 小组赛A组 VG VS OG
2018/03/30 DOTA
python实现udp数据报传输的方法
2014/09/26 Python
Python实现删除文件中含“指定内容”的行示例
2017/06/09 Python
Pandas读取MySQL数据到DataFrame的方法
2018/07/25 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
2020/02/17 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
2020/12/17 Python
通往英国高街的商店橱窗:Down Your High Street
2020/07/19 全球购物
高中班长自我鉴定
2013/12/20 职场文书
自考毕业自我鉴定
2014/03/18 职场文书
个人收入证明范本
2014/09/18 职场文书
机关职员工作检讨书
2014/10/23 职场文书
全国爱眼日活动总结
2015/02/27 职场文书
《山中访友》教学反思
2016/02/24 职场文书
Python中zipfile压缩包模块的使用
2021/05/14 Python
你知道Java Spring的两种事务吗
2022/03/16 Java/Android