在 Python 中,我正在尝试编写一个 algorithm 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_signal
,f_sample
,n
以下是任意选择的,只是为了填写代码)
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()
我的想法是,如果函数正常工作,两者的图y1
和y_alias
都会从y_sample
. 到目前为止,我完全没有成功地让函数中的 if 语句或 else 语句来做我认为应该做的事情,这让我相信要么我没有像我想要的那样理解别名,要么我的测试代码不好。
我的问题是:首先,我正在使用的测试代码是否适合我正在尝试做的事情?主要是,我正在寻找的 alias_freq 函数是什么?
另请注意:如果某些 Python 包已经内置了这样的功能,我很想听听 - 但是,我这样做的部分原因是为了给自己一个设备来更好地理解别名等现象,所以我仍然想看看我的功能应该是什么样子。