已知一个连续时间信号为x(t) = 0.5 ?? cos (2????)(?? ≥ 0),对其进行采样得到无限长序列, 采样周期???? = 0.2??,要求序列长度 N 分别取 8、32 和 64 时,画出其采样序列的时域图 形并用 FFT 求其频谱。
时间: 2023-11-30 21:04:07 浏览: 91
urlscan_v31_x64.msi
根据题目所给的连续时间信号x(t),我们可以得到其采样周期T=0.2s,采样频率f=1/T=5Hz。根据采样定理,采样频率应该大于信号的最高频率,因此我们需要确定信号的最高频率。
根据x(t)的表达式,可以看出其是一个频率为f0=1/2π的余弦信号,其最高频率为fmax=f0/2=0.25Hz。因此,采样频率f=5Hz大于最高频率fmax=0.25Hz,满足采样定理。
接下来,我们可以根据序列长度N分别为8、32和64的情况,对其进行采样并画出时域图形。具体步骤如下:
1. 根据采样定理,计算采样间隔t=1/f=0.2s。
2. 对连续时间信号x(t)进行采样,得到采样序列x(n),其中n为采样点的序号。采样序列的表达式为x(n)=0.5cos(2πfn),其中fn=nf0/N。
3. 根据采样序列x(n)画出时域图形。时域图形可以用stem函数进行绘制,代码如下:
```python
import numpy as np
import matplotlib.pyplot as plt
# 采样频率
f = 5
# 采样间隔
t = 1 / f
# 连续时间信号的频率
f0 = 1 / (2 * np.pi)
# 序列长度
N = [8, 32, 64]
# 画出时域图形
for n in N:
fn = np.arange(n) * f0 / n
xn = 0.5 * np.cos(2 * np.pi * fn * t * np.arange(n))
plt.stem(np.arange(n) * t, xn)
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.title('N = {}'.format(n))
plt.show()
```
4. 对采样序列进行FFT变换,得到其频谱。频谱可以用plot函数进行绘制,代码如下:
```python
# 画出频谱图形
for n in N:
fn = np.arange(n) * f0 / n
xn = 0.5 * np.cos(2 * np.pi * fn * t * np.arange(n))
Xk = np.fft.fft(xn)
fk = np.fft.fftfreq(n, t)
plt.plot(fk, np.abs(Xk))
plt.xlabel('Frequency (Hz)')
plt.ylabel('Magnitude')
plt.title('N = {}'.format(n))
plt.show()
```
阅读全文