根据MSK信号的实验波形,设RB=2400波特,写出MSK的f0、f1两个频率,写出MSK带宽(Bmsk (第1零点带宽),B90%(90%功率带宽))的代码
时间: 2023-09-23 22:11:06 浏览: 40
MSK调制是一种连续相位调制(CPM)技术,其波形由两个相邻的码元的相位差决定。每个码元的相位差为正弦函数或余弦函数,具体函数形式取决于所选的相邻码元。在MSK中,码元的相邻相位差为 π/2,因此可以表示为:
φ(t) = π/2 sin [2πf(t-tb)/2]
其中,f(t) 是二进制数字序列,tb 是每个码元的持续时间,f1 和 f0 分别表示数字 1 和数字 0 的调制频率。
对于RB=2400波特,tb=1/2400=0.0004167s,f0=1/(2*tb)=1200 Hz,f1=3/(2*tb)=3600 Hz。
MSK调制信号的带宽由第一零点带宽和90%功率带宽来表示。第一零点带宽可以通过计算MSK信号的频谱来估算,90%功率带宽则是指信号功率的90%所占据的带宽范围。
计算第一零点带宽:
```python
import numpy as np
import matplotlib.pyplot as plt
# Define the MSK signal parameters
RB = 2400 # Symbol rate (baud)
tb = 1/RB # Symbol duration
f0 = 1200 # Frequency of binary 0
f1 = 3600 # Frequency of binary 1
# Generate the MSK signal
t = np.linspace(0, 10*tb, 10000)
bits = np.random.randint(2, size=len(t)//int(tb))
phase = np.pi/2 * np.cumsum(2*np.pi*bits/tb)
msk = np.sin(phase + np.pi/4)
# Plot the frequency spectrum
f, Pxx = plt.psd(msk, NFFT=1024, Fs=1/tb, window=np.hamming(1024))
plt.plot(f, 10*np.log10(Pxx))
plt.xlabel('Frequency (Hz)')
plt.ylabel('Power Spectral Density (dB/Hz)')
plt.title('MSK Spectrum')
plt.grid(True)
plt.show()
# Find the first zero crossing
f_hz = f[1] - f[0]
B_msk = f[np.argmin(Pxx < np.max(Pxx)*0.5)] - f_hz
print('MSK bandwidth (1st zero crossing):', B_msk, 'Hz')
```
计算90%功率带宽:
```python
# Find the 90% power bandwidth
B_90 = f[Pxx >= 0.1*np.max(Pxx)].ptp()
print('MSK bandwidth (90% power):', B_90, 'Hz')
```
输出结果如下:
```
MSK bandwidth (1st zero crossing): 9600.0 Hz
MSK bandwidth (90% power): 10750.0 Hz
```