14.python wave 三维谱阵

4 篇文章 0 订阅

功能:
1.读取文件
2.自谱分析:fft 分析点数、重叠系数、fft、生成三维谱阵

# @File  : fft_data_process.py
# @Author: Wang Zhimin
# @Date  : 2019/10/14


import numpy as np
from scipy import signal
from scipy.fftpack import fft
import scipy.misc
import soundfile as sf
from scipy.misc import imsave
path="D:/work/音频剪切/11.wav"

sig, fs_rate =sf.read(path)#sig为矩阵 fs_data=采样率
print(sig.shape,fs_rate)
print(sig)
pic_point=1024 #fft 分析点数
repeat_point=1/2#重叠系数
delta=fs_rate/2/pic_point
#分段
i=0
start=pic_point-pic_point*repeat_point
cut_data=[]
length=len(sig)
right = int(start * 0 + pic_point)
while(right<len(sig)):#只截取fft 分析点数的倍数,最后剩余的部分舍去不要

    left = int(start * i)
    windows_ = signal.windows.hann(pic_point, False)
    cut_data.append(sig[left:right]*windows_)
    i=i+1
    right = int(start * i + pic_point)
    print(i)
# if(right>len(sig)):#如果想要的这个不注释就行
#     left = int(start * i)
#     # length-left+1
#     windows_ = signal.windows.hann(length-left, False)
#     cut_data.append(sig[left:]*windows_)
print("np.array(cut_data).shape",np.array(cut_data).shape)
hang,lie=np.array(cut_data).shape
fft_data=[]
x=[]
print("done")
print(np.arange(len(cut_data)))
for x in np.arange(len(cut_data)):
    data = abs(scipy.fftpack.fft(cut_data[x]))
    fft_data.append(data)
fft_data_array=np.array(fft_data)

fft_data_array=fft_data_array[:,:int(lie/2)]#按照自己的需求设置行列

imsave('./test.jpg',fft_data_array)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值