我试图用Python编写一个傅立叶变换,这样我就可以从几个信号中获得一些数据,但由于某种原因,我的结果有一个奇怪的负成分。在网上搜索,我找不出我做错了什么。
#Library function calls
import scipy.fft as ft #This library helps with performing the transform
import matplotlib.pyplot as plt #This will allow us to plot the data
import numpy as np #This will allow us to use arrays
#
这个问题与:有关。
其中我迷失了选择正确的算法。
现在,
目标:
我想得到我的信号的所有频率,我从一个音频文件。
上下文:
我用的是numpy和scikits.audiolab。我在dsp上读了很多书,也去了dspguru.com,在网上读报纸和博客。
我使用的代码是:
import numpy as np
from scikits.audiolab import Sndfile
f = Sndfile('first.ogg', 'r')
# Sndfile instances can be queried for the audio file meta-
你好,我正在尝试使用scipy.optimize.fmin来最小化一个函数。但事情并不顺利,因为我的计算似乎发散了,而不是收敛,我得到了一个错误。我试图修复一个公差,但它不起作用。下面是我的代码(主程序):
import sys,os
import numpy as np
from math import exp
import scipy
from scipy.optimize import fmin
from carlo import *
A=real()
x_r=0.11245
x_i=0.14587
#C=A.minim
part_real=0.532
part_imag=1.2
我需要帮助才能找到FFT信号的最大振幅。
假设我对一个音频文件执行FFT,并得到一列复数,我如何从FFT信号中提取最大振幅及其索引?我尝试使用"max“语法,但出现错误:?下标索引必须是实数正整数或逻辑数。
会很感谢你的帮助..谢谢
这是我用过的代码
[wave,fs]=wavread('c scale fast.wav'); % read file into memory */
%sound(wave,fs); % see what it sounds like */
t=0:1/fs:(length(wave)-1)/fs; % and get sampling f
下面的代码将数组的一部分乘以一个数字
def mul_by_num(a,b):
a[0:2] *= b
import numpy as np
a = np.ones(5,dtype=np.float64)
mul_by_num(a,1.0)
mul_by_num(a,1j) #Generates a warning (and casts to float!)
第二个呼叫产生一个警告。
-c:2: ComplexWarning: Casting complex values to real discards the imaginary part
问题是,在不干扰dtype的情况下,用
我编写了下面的代码来绘制根函数:
import pylab
from pylab import *
from matplotlib import pyplot as plt
import numpy as np
def roots(minimo=-5, maximo=5, step=1, potencia=3):
rootsLs=[]
fig = plt.figure()
ax = fig.add_subplot(111)
valor =1.0/potencia
for i in np.arange(minimo,maximo,step):
我试图绘制一幅图像的2D FFT:
from scipy import fftpack, ndimage
import matplotlib.pyplot as plt
image = ndimage.imread('image2.jpg', flatten=True) # flatten=True gives a greyscale image
fft2 = fftpack.fft2(image)
plt.imshow(fft2)
plt.show()
但我得到了TypeError: Image data can not convert to float。
如何绘
我试着用scipy.signal.spectogram创建了一个量级的谱图。不幸的是,我没有让它工作。 我的测试信号应该是一个频率为400 Hz、振幅为1的正弦信号。频谱图的幅度结果似乎是0.5而不是1.0。我不知道问题出在哪里。 import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
# 2s time range with 44kHz
t = np.arange(0, 2, 1/44000)
# test signal: sine with 400Hz amplitude 1
x = np
这有记录在案吗?为什么会有如此巨大的差异?
# Python 3.2
# numpy 1.6.2 using Intel's Math Kernel Library
>>> import numpy as np
>>> x = np.float64(-0.2)
>>> x ** 0.8
__main__:1: RuntimeWarning: invalid value encountered in double_scalars
nan
>>> x = -0.2 # note: `np.float` is same