gpt4 book ai didi

python - 算法 - 返回混叠频率

转载 作者:太空宇宙 更新时间:2023-11-04 03:36:49 24 4
gpt4 key购买 nike

在 Python 中,我尝试编写一个算法 alias_freq(f_signal,f_sample,n),其行为如下:

def alias_freq(f_signal,f_sample,n):
f_Nyquist=f_sample/2.0
if f_signal<=f_Nyquist:
return n'th frequency higher than f_signal that will alias to f_signal
else:
return frequency (lower than f_Nyquist) that f_signal will alias to

以下是我用来测试上述功能的代码(下面的f_signalf_samplen是任意选择的填写代码)

import numpy as np
import matplotlib.pyplot as plt

t=np.linspace(0,2*np.pi,500)

f_signal=10.0
y1=np.sin(f_signal*t)
plt.plot(t,y1)

f_sample=13.0
t_sample=np.linspace(0,int(f_sample)*(2*np.pi/f_sample),f_sample)
y_sample=np.sin(f_signal*t_sample)
plt.scatter(t_sample,y_sample)

n=2
f_alias=alias_freq(f_signal,f_sample,n)
y_alias=np.sin(f_alias*t)
plt.plot(t,y_alias)

plt.xlim(xmin=-.1,xmax=2*np.pi+.1)
plt.show()

我的想法是,如果该函数正常工作,y1y_alias 的绘图将击中 y_sample 中的每个散点。到目前为止,我完全没有成功地让函数中的 if 语句或 else 语句执行我认为应该执行的操作,这让我相信要么我对别名的理解几乎没有我想要的那么好,要么我的测试代码不行。

我的问题是:初步而言,我正在使用的测试代码是否适合我尝试做的事情?主要是,我正在寻找的 alias_freq 函数是什么?

另外请注意:如果某些 Python 包已经内置了这样的功能,我很乐意听到它 - 然而,我这样做的部分原因是给自己一个理解现象的设备更喜欢别名,所以我仍然想看看我的函数应该是什么样子。

最佳答案

据我对问题的正确理解,混叠信号的频率是 abs(sampling_rate * n - f_signal),其中 n 是最接近的整数倍f_signal.

因此:

n = round(f_signal / float(f_sample))
f_alias = abs(f_sample * n - f_signal)

这应该适用于低于和高于奈奎斯特的频率。

关于python - 算法 - 返回混叠频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28650469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com