Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使python代码在spyder中执行得更快_Python_Matplotlib_Fft_Spyder - Fatal编程技术网

使python代码在spyder中执行得更快

使python代码在spyder中执行得更快,python,matplotlib,fft,spyder,Python,Matplotlib,Fft,Spyder,我正在用python运行下面的代码,代码读取一个wav文件。计算FFT,过滤FFT值,然后绘图。输出在一小时左右之后。。 如何知道python中哪部分代码花费的时间更长,以及在此代码中可以优化哪些内容 import scipy.io.wavfile as wavfile import scipy.fftpack as fftpack from matplotlib import pyplot as plt import pandas as pd import numpy as np def pe

我正在用python运行下面的代码,代码读取一个wav文件。计算FFT,过滤FFT值,然后绘图。输出在一小时左右之后。。 如何知道python中哪部分代码花费的时间更长,以及在此代码中可以优化哪些内容

import scipy.io.wavfile as wavfile
import scipy.fftpack as fftpack
from matplotlib import pyplot as plt
import pandas as pd
import numpy as np
def percentage(percent, whole):
  return (percent * whole) / 100.0

sample_rate, sample = wavfile.read("Test.wav")
print ("Sample rate", sample_rate," Hz")
num_of_channels = len(sample.shape)
print ("Channels", num_of_channels,"Audio data shape",sample.shape)
if num_of_channels == 2:
    sample = sample.sum(axis=1) / 2
N = sample.shape[0]
wav_length = N / sample_rate
print ("Duration of audio wav file in secs", wav_length,"Samples chosen",sample.shape[0])
time =np.linspace(0, wav_length, sample.shape[0])
sampling_interval=time[1]-time[0]

#-----------------------Graph plotting----------------------------
params = {'legend.fontsize': '20',
          'font.family': 'Times New Roman Bold',
          'font.size': '15',
          'axes.labelsize': 'x-large',
          'axes.labelweight': 'bold',
          'axes.titlesize':'x-large',
          'xtick.labelsize':'x-large',
          'ytick.labelsize':'x-large',
          'font.weight':'bold'}

plt.rcParams.update(params)

#---------------FFT of Original sample-----------------------
fft_sample_data=2.0*np.abs(fftpack.fft(sample)/len(time))
fft_freqs=fftpack.fftfreq(len(time),sampling_interval)
print("Frequency range ",fft_freqs)
mask = fft_freqs > 0


#------Filter the Data points of FFT---------------------
df = pd.DataFrame({"Frequency" : fft_freqs[mask], "Sample Data" : fft_sample_data[mask]})
column = df["Sample Data"]
max_value = column.max()
percentage_90 = percentage(70,max_value)
MoreThan90_filter = df[percentage_90 <= df['Sample Data']]
MoreThan90_filter.to_csv("MoreThan90_FFTDataSet.csv",header=None, index=False)

df.to_csv("FFTDataSet.csv", index=False)
print("Complete FFT Dataset Count ",df.count())

plt.figure(1)
data = np.genfromtxt("MoreThan90_FFTDataSet.csv", delimiter=",", names=["x", "y"])
print(data['x'],data['y'])
plt.plot(data['x'], data['y'])
plt.xlabel('Frequency [Hz]')
plt.ylabel('Sample Data')
plt.legend()
plt.show()
将scipy.io.wavfile导入为wavfile
将scipy.fftpack作为fftpack导入
从matplotlib导入pyplot作为plt
作为pd进口熊猫
将numpy作为np导入
def百分比(百分比,全部):
回报率(百分比*全部)/100.0
样本率,样本=wavfile.read(“Test.wav”)
打印(“采样率”,采样率,“Hz”)
通道数=len(sample.shape)
打印(“频道”,频道数,“音频数据形状”,sample.shape)
如果通道数=2:
样本=样本。总和(轴=1)/2
N=样本。形状[0]
波形长度=N/采样率
打印(“音频wav文件的持续时间(秒)”,wav_长度,“选择的样本”,sample.shape[0])
时间=np.linspace(0,波形长度,sample.shape[0])
采样间隔=时间[1]-时间[0]
#-----------------------图形绘制----------------------------
params={'legend.fontsize':'20',
“font.family”:“Times New Roman Bold”,
“font.size”:“15”,
“axes.labelsize”:“x-large”,
“axes.labelweight”:“粗体”,
'axes.titlesize':'x-large',
'xtick.labelsize':'x-large',
'ytick.labelsize':'x-large',
'font.weight':'bold'}
plt.rcParams.update(参数)
#---------------原始样本的FFT-----------------------
fft_样本_数据=2.0*np.abs(fft包fft(样本)/len(时间))
fft\u freqs=fftpack.fftfreq(len(时间),采样间隔)
打印(“频率范围”,fft\U频率)
掩码=fft\u频率>0
#------滤波FFT的数据点---------------------
df=pd.DataFrame({“频率”:fft_freqs[mask],“采样数据”:fft_Sample_Data[mask]})
column=df[“样本数据”]
max_value=column.max()
百分比90=百分比(70,最大值)
Morethan 90_filter=df[百分比]看看。它可以显示如何为代码分配执行时间。