我想要实现的目标如下:我需要声音文件(.wav)的频率值进行分析.我知道很多程序会给出值的可视图(谱图),但我需要原始数据.我知道这可以通过FFT完成,并且应该在python中相当容易编写脚本但不确定如何完全执行它.因此,假设文件中的信号长度为.4s,那么我希望多次测量,为程序测量的每个时间点以及它找到的值(频率)(以及可能的功率(dB))提供输出作为数组.复杂的是我想分析鸟歌,它们经常有谐波或信号超出频率范围(例如1000-2000赫兹).我希望程序也能输出这些信息,因为这对于我想对数据做的分析非常重要:)
现在有一段看起来非常像我想要的代码,但我认为它并没有给我所有我想要的价值....(感谢Justin Peel将这个问题发布到另一个问题:))所以我聚集在一起我需要numpy和pyaudio但不幸的是我不熟悉python所以我希望Python专家可以帮助我吗?
源代码:
# Read in a WAV and find the freq's
import pyaudio
import wave
import numpy as np
chunk = 2048
# open up a wave
wf = wave.open('test-tones/440hz.wav', 'rb')
swidth = wf.getsampwidth()
RATE = wf.getframerate()
# use a Blackman window
window = np.blackman(chunk)
# open stream
p = pyaudio.PyAudio()
stream = p.open(format =
p.get_format_from_width(wf.getsampwidth()),
channels = wf.getnchannels(),
rate = RATE,
output = True)
# read some data
data = wf.readframes(chunk)
# play stream and find the …
Run Code Online (Sandbox Code Playgroud) 我的代码:
from numpy import *
def pca(orig_data):
data = array(orig_data)
data = (data - data.mean(axis=0)) / data.std(axis=0)
u, s, v = linalg.svd(data)
print s #should be s**2 instead!
print v
def load_iris(path):
lines = []
with open(path) as input_file:
lines = input_file.readlines()
data = []
for line in lines:
cur_line = line.rstrip().split(',')
cur_line = cur_line[:-1]
cur_line = [float(elem) for elem in cur_line]
data.append(array(cur_line))
return array(data)
if __name__ == '__main__':
data = load_iris('iris.data')
pca(data)
Run Code Online (Sandbox Code Playgroud)
虹膜数据集:http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data
输出:
[ 20.89551896 …
Run Code Online (Sandbox Code Playgroud) 从我的算法教科书:
一年一度的县赛马比赛将引进三羽从未参加过比赛的纯种马.很兴奋,你研究他们过去的200场比赛并总结这些比赛的概率分布超过四个结果:第一("第一名"),第二名,第三名和其他.
Outcome Aurora Whirlwind Phantasm
first 0.15 0.30 0.20
second 0.10 0.05 0.30
third 0.70 0.25 0.30
other 0.05 0.40 0.20
Run Code Online (Sandbox Code Playgroud)
哪匹马最可预测?这个问题的一个定量方法是研究可压缩性.将每匹马的历史记录为200个值(第一,第二,第三,其他)的字符串.然后可以使用霍夫曼算法计算编码这些跟踪记录串所需的总位数.这对于Aurora来说是290位,对于Whirlwind来说是380位,对于Phantasm来说是420位(检查它!).Aurora具有最短的编码,因此在强烈意义上是最可预测的.
他们是如何为Phantasm获得420的?我一直得到400字节,如下所示:
首先结合,其他= 0.4,结合第二,第三= 0.6.最终以2位编码每个位置.
有没有我对霍夫曼编码算法误解的东西?
教科书可在此处获得:http://www.cs.berkeley.edu/~vazirani/algorithms.html(第156页).
我想知道数据的频率.我有点想到它可以使用FFT完成,但我不知道该怎么做.一旦我将整个数据传递给FFT,它就会给我2个峰值,但我怎样才能获得频率?
非常感谢提前.
我正在尝试基于文档属性的状态更改进行批量更新.创建工作正常,但批量是吓坏了.我收到"脚本或文档丢失"效果的错误,但一切看起来都不错.
以下是我尝试批量更新的方法:
frequency_cleared = [
{
"_id": result['_id'],
"_type": "the-type",
"_index": "the-index",
"_source": result['_source'],
"_op_type": 'update'
}
for result in search_results['hits']['hits']
]
Run Code Online (Sandbox Code Playgroud)
我在迭代结果的原因是因为我在列表中使用了一个if理解,但是因为我能够看到结果,所以我知道这不是问题.我无法显示结果,不得不更改属性名称,因为这是我工作的公司.
这是追溯:
Elasticsearch.exceptions.RequestError:
TransportError(400, 'action_request_validation_exception',
'Validation Failed: 1: script or doc is missing...')
Run Code Online (Sandbox Code Playgroud)
省略号表示它显示列表中每个元素失败的相同错误.
我们正试图将我们的内部网移动到Pylons.我的老板正试图设置Pylons在Apache后面使用uWSGI,这样他就可以设置多个独立的应用程序.但是,他很难设置它,在uWSGI的C源代码中有一些明显的代码问题.有没有人对如何部署可能帮助我们的Pylons应用程序有任何建议?
谢谢,
道格
我有俱乐部成员的记录和他们的兴趣,如下所示:
Member A: Football, Swimming
Member B: Swimming, Jooga, Jogging
Member C: Cycling, Football
Member D: Football, Tennis, Cycling
Run Code Online (Sandbox Code Playgroud)
是否可以在Python中绘制这些图,以便可以看到成员共享的不同兴趣?在此先感谢,Adia
我正在使用scipy.optimize.fmin_bfgs(f, init_theta, fprime)
最小化f
,它具有渐变fprime
.我计算f
并fprime
在一个函数中,因为大多数计算是相同的,所以没有必要做两次.
有没有什么方法来调用fmin_bfgs()
指定同时返回一个单一的功能f
和fprime
?
尽管数组是多维的,但许多数组方法返回单个索引.例如:
a = rand(2,3)
z = a.argmax()
Run Code Online (Sandbox Code Playgroud)
对于二维,很容易找到最大元素的矩阵索引:
a[z/3, z%3]
Run Code Online (Sandbox Code Playgroud)
但对于更多尺寸,它可能会变得烦人.在一个(折叠)维度中给定索引时,Numpy/Scipy是否有一种简单的方法可以在多个维度中返回索引?谢谢.
你们可以帮我解决一些我被困住的功课问题吗?
完整二叉树中的局部最小值被定义为小于其所有邻居(邻居=父,左子,右子)的节点.我需要在给定的完整二叉树中找到局部最小值,其中每个节点具有不同的数字,在O(logn)complixity时间内.
好吧,既然要求是O(logn)那么我试着想办法只通过一条路穿过树到一片叶子.或者也许每次在递归时我只能看到树的一半,这样它就会进行登录.
所以说我在树上有这个:
70
/ \
77 60
Run Code Online (Sandbox Code Playgroud)
有3种情况:
1)根小于左右孩子//然后我就完成了
2)根比左边小
3)根比右边小
上述树的情况下2.因此,让我们"扔掉"左子树,因为没有办法77可以是"极小",因为它比其母公司大.所以我们留下了正确的子树.依此类推,直到找到当地的最低标准.
这里的问题是,当我们扔掉那个左子树时,我们可能会错过下面的另一个本地最小值.这是一个例子:
70
/ \
77 60
/ \ / \
1 8 9 14
/ \ / \ / \ / \
3 4 5 6 2 7 15 13
Run Code Online (Sandbox Code Playgroud)
所以在这种情况下,唯一的局部最小值是"1",但是我们错过了它,因为在开始时我们决定搜索根的右子树.
请原谅我关于Python装饰器的另一个问题.我读了很多,但我想知道具体的以下问题的最佳解决方案是什么.
我写了几个函数,在numpy/scipy中做某种形式的梯度下降.给定矩阵X,我尝试迭代地最小化一些距离d(X,AS),作为A和S的函数.每个算法遵循相同的基本过程,但每个算法具有不同的更新规则.例如,这是我的两个函数(注意唯一的区别在于更新规则):
def algo1(X, A=None, S=None, K=2, maxiter=10, c=0.1):
M, N = X.shape
if A is None:
A = matrix(rand(M, K))
if S is None:
S = matrix(rand(K, N))
for iter in range(maxiter):
# Begin update rule.
A = multiply(A, (X*S.T + c)/(A*S*S.T + c))
S = multiply(S, (A.T*X + c)/(A.T*A*S + c))
# End update rule.
for k in range(K):
na = norm(A[:,k])
A[:,k] /= na
S[k,:] *= na
return A, S
Run Code Online (Sandbox Code Playgroud)
... 和另外一个:
def algo2(X, A=None, S=None, K=2, …
Run Code Online (Sandbox Code Playgroud) python ×7
numpy ×4
algorithm ×2
fft ×2
scipy ×2
apache ×1
audio ×1
binary-tree ×1
c#-3.0 ×1
compression ×1
decorator ×1
deployment ×1
frequency ×1
gradient ×1
huffman-code ×1
local ×1
matplotlib ×1
min ×1
optimization ×1
pca ×1
pylons ×1
refactoring ×1
uwsgi ×1