从离散波产生的采样波中提取波长

2024-10-01 19:28:26 发布

您现在位置:Python中文网/ 问答频道 /正文

在下面的代码中,我从音频样本(1000Hz信号)中提取了一个数据窗口。在代码中,我试图获得信号的波长。 https://paste.pound-python.org/show/HRVqQNy3w9Sr73q4oY8g/

sample = data[100:200]
x = 0
i = 1
num_occur = 0
while num_occur <2:
    if sample[i] == sample[0]:
        x = i
        i += 1
        num_occur += 1
    else:
        i += 1
wavelen = sample[:x]

但却没有那么成功。。。 样本的图像:(https://pasteboard.co/HFFXGxW.png

嗯,我知道问题是什么;尽管matplotlib将波绘制为连续波(由于采样频率高),但波是由离散数据组成的,因此可能存在或不存在满足以下条件的数据值:

sample[i] == sample[0]

我将非常感谢任何关于如何解决这个问题的帮助和建议


Tags: 数据sample代码httpsorg信号show音频
1条回答
网友
1楼 · 发布于 2024-10-01 19:28:26

有人教我如何得到答案。这是一个简单但合乎逻辑的方法。 所以我只需要提取切割为0的点,第1个和第3个连续点之间的波会给我一个波长

下面是我写的代码:

sample = data[100:200]
i = 1
num_occur = 0
cut_zero = []
x = 0
while num_occur < 3:
    if sample[x] == abs(sample[x]):
        if sample[i] == abs(sample[i]):
            i +=1
    else:
        cut_zero.append(i)
        num_occur += 1
        i += 1
        x = i
    elif sample[x] != abs(sample[x]):
        if sample[i] == abs(sample[i]):
            cut_zero.append(i)
            i += 1
            num_occur += 1
            x = i
        else:
            i += 1
print(cut_zero)
a = cut_zero[0]
b = cut_zero[2]
wavelen = sample[a:b]

也许我能做得更有效率:),如果是的话请告诉我。 这是波长的图像https://pasteboard.co/HFLtOmr.png

相关问题 更多 >

    热门问题