方波频率生成信号,再通过采样进行傅里叶变换得到离散频谱的程序
时间: 2023-05-25 20:05:24 浏览: 140
dtfs.rar_DTFS_MATLAB方波脉冲
代码如下:
```python
import numpy as np
import matplotlib.pyplot as plt
# 设置采样频率、采样点数、频率和幅值
fs = 1000 # 采样频率
N = 1024 # 采样点数
f = 50 # 方波频率
A = 1.0 # 幅值
# 生成方波信号
t = np.arange(N) / fs # 时间序列
x = A * np.sign(np.sin(2 * np.pi * f * t)) # 方波信号
# 绘制时域波形
plt.figure()
plt.plot(t, x)
plt.xlabel('Time(s)')
plt.ylabel('Amplitude')
plt.title('Square wave signal')
# 对方波信号进行傅里叶变换,并得到离散频谱
X = np.fft.fft(x) / N # 傅里叶变换
X_mag = np.abs(X[:N//2]) # 取频谱的前一半
f = np.arange(N//2) * fs / N # 频率序列
# 绘制频域波形
plt.figure()
plt.plot(f, X_mag)
plt.xlabel('Frequency(Hz)')
plt.ylabel('Magnitude')
plt.title('Discrete Frequency Spectrum')
plt.show()
```
注:本程序中的傅里叶变换使用了numpy中的fft函数(快速傅里叶变换),并且得到的频谱只取了前一半。这是因为快速傅里叶变换得到的频谱是对称的,只需要取前一半即可。离散频率序列的计算方式为f = np.arange(N//2) * fs / N。
阅读全文