python 如何将两个实数矩阵合并为一个复数矩阵
问题描述:
有时需要把两个实数矩阵,一个作为实部,一个作为虚部,合并为一个复数矩阵,该如何操作?
解决办法:
假如是在第二个维度上进行合并(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中的pandas模块中对重复数据去重步骤: 1)利用DataFrame中的duplicated方法返回一个布尔型的Series,显示各行是否有重复行,没有重复行显示为FALSE,有重复行显示为TRUE: 2)再利用DataFrame中的drop_duplicates方法用于返回一个移除了重复行的DataFrame. 注释: 如果duplicated方法和drop_duplicates方法中没有设置参数,则这两个方法默认会判断全部咧,如果在这两个方法中加入了指定的属性名(或者称为列名)
-
Python3 实现随机生成一组不重复数并按行写入文件
笔主在做一个项目要生成一组随机有序的整型数字,并按行输出到文本文件使用,恰好开始学习Python3,遂决定直接使用Python3解决 思路:与随机数相关的函数都要使用到random这个系统库,查看相关的开发文档发现random库下面有个sample(seq,n)函数比较符合,能在在一个序列中随机选择n个不重复的数,并返回一个list,接下来就是将一个list按行输出到一个文本文件中 过程: 1.导入random库 import random 2.生成一个自己自己想要的范围的序列,笔者是需要在1-
-
python print出共轭复数的方法详解
复数是由一个实数和一个虚数组合构成,表示为:x+yj 一个复数时一对有序浮点数(x,y),其中x是实数部分,y是虚数部分. Python语言中有关复数的概念: 1.虚数不能单独存在,它们总是和一个值为0.0的实数部分一起构成一个复数 2.复数由实数部分和虚数部分构成 3.表示虚数的语法:real+imagej 4.实数部分和虚数部分都是浮点数 5.虚数部分必须有后缀j或J 复数的内建属性: 复数对象拥有数据属性,分别为该复数的实部和虚部. 复数还拥有conjugate方法,调用它可以返回该复数的
-
Python复数属性和方法运算操作示例
本文实例讲述了Python复数属性和方法运算操作.分享给大家供大家参考,具体如下: #coding=utf8 ''''' 复数是由一个实数和一个虚数组合构成,表示为:x+yj 一个负数时一对有序浮点数(x,y),其中x是实数部分,y是虚数部分. Python语言中有关负数的概念: 1.虚数不能单独存在,它们总是和一个值为0.0的实数部分一起构成一个复数 2.复数由实数部分和虚数部分构成 3.表示虚数的语法:real+imagej 4.实数部分和虚数部分都是浮点数 5.虚数部分必须有后缀j或J 复
-
python中复数的共轭复数知识点总结
理科学生应该都了解过共轭吧,经常在数学或者物理还有化学中出现,在坐标轴上去描述共轭函数还是比较清晰的,py语言里也经常会出现关于共轭函数的使用,操作也非常有趣, 在计算机课上,经常被当做考试的试题,了解不深,或者还没有吃透的同学,看看以下给大家准备的快读掌握内容. Python的复数合集 1.复数之间的加. 减. 乘. 除运算 >>> x = 3 + 4j >>> y = 5 + 6j >>> x + y # (8+10j) >>>
-
浅谈Python 中的复数问题
前言 复习试题时,发现一道复数问题 问题 关于 Python 的复数类型,以下选项中描述错误的是 A复数的虚数部分通过后缀"J"或者"j"来表示 B对于复数 z,可以用 z.real 获得它的实数部分 C对于复数 z,可以用 z.imag 获得它的实数部分 D复数类型表示数学中的复数 正确答案: C 首先我们来明确一下什么是复数: 复数在数学上面的定义是由实数部分和虚数部分所组成的数,形如a+bj . 其中a.b为实数,j为"虚数单位",j 的平
-
python列表返回重复数据的下标
这篇文章主要介绍了python列表返回重复数据的下标,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 class Solution(object): def searchRange(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ flag = 0 lis = [] for
-
python 如何将两个实数矩阵合并为一个复数矩阵
问题描述: 有时需要把两个实数矩阵,一个作为实部,一个作为虚部,合并为一个复数矩阵,该如何操作? 解决办法: 假如是在第二个维度上进行合并(real: Data[:, 0, :, :] imag: Data[:, 1, :, :]),有两种方法 第一种. result = Data[:, 0, :, :] + 1j*Data[:, 1, :, :] 第二种. result = 1j*Data[:, 1, :, :] result += Data[:, 0, :, :] 第二种方法更节省内存~ 补
-
Python利用字典将两个通讯录文本合并为一个文本实例
本文实例主要实现的是利用字典将两个通讯录文本合并为一个文本,具体代码如下: def main(): ftele1=open("d:\TeleAddressBook.txt","rb") ftele2=open("d:\EmailAddressBook.txt","rb") ftele1.readline()#跳过第一行 ftele2.readline() lines1=ftele1.readlines() lines2=fte
-
java实现把两个有序数组合并到一个数组的实例
如下所示: package com.test.sort; public class testMerge { public static void main(String[] args) { int[] a = { 1, 3, 5 }; int[] b = { 2, 3, 4, 7 }; merge m = new merge(); m.method(a, b); } } class merge { public void method(int[] a, int[] b) { int l = a.
-
python 将列表里的字典元素合并为一个字典实例
我就废话不多说了,大家还是直接看代码吧~ def list_dict(list_data): dict_data = {} for i in list_data: key, = i value, = i.values() dict_data[key] = value return dict_data if __name__ == '__main__': list_data = [{'aa': 'aa'}, {'bb': 'bb'}, {'cc': 'cc'}, {'dd': 'dd'}] pri
-
Python将多个excel文件合并为一个文件
利用Python,将多个excel文件合并为一个文件 思路 利用python xlrd包读取excle文件,然后将文件内容存入一个列表中,再利用xlsxwriter将内容写入到一个新的excel文件中. 完整代码 # -*- coding: utf-8 -*- #将多个Excel文件合并成一个 import xlrd import xlsxwriter #打开一个excel文件 def open_xls(file): fh=xlrd.open_workbook(file) return fh #
-
Python中交换两个元素的实现方法
Python既具有普通程序开发语言的特点,也具有Matlab语言用于数值计算的特点,,当然了数值计算是由其其强大的第三方库numpy实现的,矩阵在python中数据类型是ndarray,python中交换两个数值的代码和交换同一矩阵(ndarray)中不同向量的写法是不一样的. 以下是用Python原生的数据结构list实现的交换 >> a = [1,2,3] >> b = [4,5,6] >> a [1,2,3] >> b [4,5,6] >>
-
jdk8使用stream实现两个list集合合并成一个(对象属性的合并)
目录 一.前言 二.示例 示例1:java8 合并两个 list<map> 示例2:java8 合并两个 list<T> 示例3:java8 合并两个 list<T>,集合个数前者小于后者,要后者 示例4:java8 合并两个 list<T>,集合个数前者大于后者,要后者 java使用stream实现list中对象属性的合并:根据两个List中的某个相同字段合并成一条List,包含两个List中的字段 一.前言 为什么要用Lambda表达式和Stream流做
-
Python中实现两个字典(dict)合并的方法
本文实例讲述了Python中实现两个字典(dict)合并的方法,分享给大家供大家参考.具体方法如下: 现有两个字典dict如下: dict1={1:[1,11,111],2:[2,22,222]} dict2={3:[3,33,333],4:[4,44,444]} 合并两个字典得到类似: {1:[1,11,111],2:[2,22,222],3:[3,33,333],4:[4,44,444]} 方法1: dictMerged1=dict(dict1.items()+dict2.items())
-
python实现两个一维列表合并成一个二维列表
我就废话不多说了,直接上代码吧! >>> list1 = [1,2,3,4,4] >>> list2 = [2,3,4,5,2] >>> z = list(zip(list1,list2)) >>> z [(1, 2), (2, 3), (3, 4), (4, 5), (4, 2)] >>> z[1][1] 3 >>> z[0][1] 2 >>> z[2] (3, 4) 以上这篇p
-
python 实现两个npy档案合并
我就废话不多说了,大家还是直接看代码吧~ old_record=numpy.load('exist.npy') temp_record=[] path = os.getcwd()+"\\database\\new" #获取当前路径 for root,dirs,files in os.walk(path): #遍历统计 for each in files: url=path+"\\"+each ... temp_record.append(temp) numpy.sa
随机推荐
- JavaScript与Div对层定位和移动获得坐标的实现代码
- php 修改、增加xml结点属性的实现代码
- angular实现商品筛选功能
- AngularJs bootstrap搭载前台框架——准备工作
- 正则表达式实现最小匹配功能的方法
- ASP.NET数据绑定之GridView控件
- Bootstrap选项卡动态切换效果
- javascript实现的简单计时器
- Asp.net中Microsoft.Identity的IPasswordHasher加密的默认实现与运用
- asp.net母版页如何使用
- 基于Json序列化和反序列化通用的封装完整代码
- js实现的map方法示例代码
- GO语言类型转换和类型断言实例分析
- C#中foreach实现原理详解
- 给ListBox添加双击事件示例代码
- 从父页面读取和操作iframe中内容方法
- 试用google search的Ajax api
- 使用JPA中@Query 注解实现update 操作方法(必看)
- Java中数字黑洞实现代码
- js微信扫描二维码登录网站技术原理