C语言版本STFT/ISTFT
接上一篇:https://blog.csdn.net/SPESEG/article/details/101672559
注意:寡人的stft是有前提条件的,并不是完全与librosa.stft一一对应【我的版本参数是固定的,不可变,其他是一样的】,因为我的hop_length是固定为nfft的1/4,而nfft与波形长度完全相同,有人说,你这nfft长度和波形长度一样还有短时谱?SB,你先看看librosa中的定义再BB,别特么啥都不了解就凭主观臆断或者以往认知下结论。
我先去吃个饭再说。头文件如下:
float *get_hanning(int n);
float *np_pad(float *y, int n_fft);
float **util_frame(float *y2, int n_fft);
float get_angle(float imag, float real);
cmplx *rfft(float *rin, int n_fft);
void reverse(float *x,int n_fft);
float *irfft(cmplx *mp, int n_fft);
cmplx **stft(float *y, int n_fft);
float *win_sums(float *ifft_window, int n_frames, int n_fft, int hop_length);
float *istft(cmplx **spec, int n_fft);
昨天写的函数测试结果有问题,我挨个测试下。因为cpp中有了complex类型(应该有),我定义同样的结构体结果告诉我重定义,不同基类型,结果我定义成cmplx,另外我将mag和angle的结构用同样的东西了。两者混用。
STFT有问题。待我解决。
python的结果如下:1~16作为输入信号验证
array([ 0.0000000e+00, 3.1415927e+00, -3.1415927e+00, 5.4828723e-16,3.1415927e+00, 1.2280696e-15, -3.1415927e+00, 6.4078058e-16,3.1415927e+00], dtype=float32)array([ 0. , 2.5029557 , -1.630843 , -2.200605 , 3.040559 ,1.3331858 , -0.31469315, -1.689683 , 3.1415927 ], dtype=float32)array([ 0. , 2.7401707, -1.5707964, -1.5707964, -1.5707964,-1.5707964, -1.5707964, -1.5707964, 0. ], dtype=float32)array([ 0. , 2.9132805 , -1.2707483 , -0.16391452, 1.7701185 ,-2.435899 , -0.6977143 , 1.1905247 , 3.1415927 ], dtype=float32)array([ 0. , -3.0581887, 0.4727274, -1.9634954, 1.4135916,-1.1780972, 2.2885025, -0.3926991, 3.1415927], dtype=float32)
下面的C的结果,只有第一行的第三个数相差个符号,这让我懵逼啊。。。。。。。要是这个位置都出现,那就是有问题
我特么服了,当波形为1~32时,结果仍旧是第一行有问题,不只一个地方。
array([ 0.0000000e+00, -3.1415927e+00, -3.1415927e+00, 3.3679136e-16,3.1415927e+00, 2.9604969e-16, -3.1415927e+00, 6.0319980e-16,-3.1415927e+00, 6.3023799e-16, 3.1415927e+00, -3.1086539e-15,-3.1415927e+00, -1.2200039e-15, 3.1415927e+00, -2.8588476e-15,3.1415927e+00], dtype=float32)
烦死了,从头开始测试函数。幅度谱都没毛病,就是角度有问题。这个暂时没有发现哪里错误,烦恼。
后面发现了java在new时可能已经初始化为0了,而C中的malloc是没有初始化的,只是分配了空间。
所以如果要在堆中开辟空间必须手动初始化为0,所以这是C中普遍存在的问题,先解决这个。改了这个错误后竟然可以跑的通STFT与ISTFT了,不得不说C还是6,同样1024点,C只需3ms,java30ms,这差别真大。
冻死了,空调开得太冷了,我回去穿个衣服,就住附近。
另外有相关问题可以加入QQ群讨论,不设微信群
QQ群:868373192
语音深度学习群
C语言版本STFT/ISTFT相关推荐
- 快速排序的两种实现方法(c语言版本)
经过调研发现,对任意无序整数数组,快速排序有两种实现方法,这里简单阐述下思路: 思路一:随意选择一个基准元,一般选择数组的起始元或末尾元,Weiss这本书上特意搞了个算法来选择基准元,--,总之就是基 ...
- 十种经典排序算法精粹(c语言版本)
下面给出这段时间我苦心研究验证过的十种经典排序算法的C语言版本,即下面的排序算法: 插入排序,shell排序,冒泡排序,快速排序,选择排序,堆排序,归并排序,桶排序,基数排序和计数排序.整理出来以作备 ...
- T-SQL: 17 个与日期时间相关的自定义函数(UDF),周日作为周的最后一天,均不受 @@DateFirst、语言版本影响...
CSDN 的 Blog 太滥了!无时不刻地在坏! 开始抢救性搬家 ... ... 到这里重建家园 /* T-SQL: 17 个与日期时间相关的自定义函数(UDF),周日作为周的最后一天,均不受 @@D ...
- 轻松搞定c++语言pdf_当年锤子的大爆炸,如今12个语言版本都可轻松搞定!
第011期原创分享 作者:huber 大家好,我是Hub哥!又被Hub友们催更了. 这些天,刷抖音看到罗永浩老师的直播带货,发现了老罗的一些变化,头发少了几千根啊(瞎猜的),言行举止少了往日怼天怼地的 ...
- .NET中做多语言版本的心得 1
在过去的大半年中,因为产品的模块越来越多,多语言似乎做得没有尽头了 在接下来的几天里面,我会把在.NET中做多语言版本的心得慢慢跟大家分享. 今天先说说基本要求: 1.我们使用资源文件(.resx)存 ...
- qsort归纳学习(c语言版本)
qsort归纳学习(c语言版本) 参考:https://www.cnblogs.com/ForeverJoker/archive/2013/05/25/qsort-sort.html 包含在<s ...
- 编写一个自己的完全C语言版本的memset函数,并且评价这个实现的性能和可移植性。
编写一个自己的完全C语言版本的memset函数,并且评价这个实现的性能和可移植性. memset这个函数的作用大致可以理解为将从指针指向的地址开始的指定字节长度的空间全部替换为指定的值.那么我们可以很 ...
- 一步一步实现网站的多语言版本
网站在开发的过程中需要实现多语言版本,我们暂且认为有英语和汉语两个版本.网站结构包括,UI过程,rest服务,以及相应的js,各个部分我们都要实现多语言,不要求一键切换,但是在部署过程中要能实现多与语 ...
- paho.mqtt.embedded-c-master c语言版本架构
仅分析C语言版本,不带-C的那个目录是C++语言版本的,差别不大 弄清了这层关系,在linux下通过make,make install完成库文件的编译和安装.最终我们的工程如下组织:
- go语言csv包_玩转数据处理120题R语言版本
点击上方"早起Python",关注并星标公众号 和我一起玩Python 本文为玩转数据处理120题|R语言版本 习题|刘早起,解答|陈熹 大家好,本文为R语言数据处理120题系列完 ...
最新文章
- 目标检测中的Tricks
- python实现反转链表讲解_基于Python实现2种反转链表方法代码实例
- 安卓高手之路之PackageManagerservice(二)
- SpringBoot | 第一章:第一个SpringBoot应用
- 计算机系统集成项目的管理及应用
- bios设置_大白菜U盘启动BIOS设置教程
- 【例题 8-13 UVA - 11093】Just Finish it up
- 点钞机语音怎么打开_原来微信语音一样能转发? 居然还有人不知道
- postgre查询表最后更新日期_Power BI 10月份功能更新浅译
- python 绘制图表生成svg文件_使用Python创建SVG
- 三星 安装程序无法将 配置为此计算机,三星手机怎么安装软件 三星手机无法安装软件解决办法...
- win10绝地求生游戏崩溃怎么解决
- 04、CONSTANT-ROUND CZK PROOFS for NP--Alon Rosen[对于NP的常数轮CZK证明]
- c语言中常用运算符号
- Unity Spine 换装方案
- UG NX二次开发(C#)-UIStyler-ListBox操作
- android /mnt/sdcard 只读,Android重要的文件目录mnt/sdcard 和 /sdcard
- 脚本基础(未完待续)
- PC 真的不行了!Intel、AMD 同遭生死劫
- 菁英杯计算机能力大赛试题,“第四届全国大学生计算机系统能力培养大赛(龙芯杯)”决赛结果...
热门文章
- mac上投屏android_有哪些支持安卓投屏Mac的软件
- 驾驶机动车在高速公路上倒车、逆行、穿越中央分隔带掉头的一次记6分。
- ppt转图片(支持动画帧的转换)
- 马里兰帕克分校计算机研士排名,2020年马里兰大学帕克分校QS世界排名
- hd6630m可以玩lol吗_《LOL》流畅玩!Intel HD620核显性能实测
- 模型调参(一):weight decay(权重衰减)【“权重衰减”也叫“L1/L2正则化”】【权重衰减系数:正则项系数 λ】【对参数w有影响、对偏置b没影响】【偏置不加正则】
- 如何解决word添加脚注后正文跑到下一页的问题
- excel两个表格数据对比_表格技巧—Excel表格两列数据合并
- 如何用python计算增长率_如何用excel函数来计算增长率?
- arm触摸屏的头文件_ARM触屏校准程序