matlab实现10.7MHZFM信号正交解调
时间: 2023-10-01 12:09:22 浏览: 104
由于正交解调涉及到信号的复数运算,在MATLAB中可以利用复数和复数运算库函数来实现。
假设10.7MHz的FM信号为s(t),采样频率为fs,载波频率为fc,则正交解调分别得到I路信号i(t)和Q路信号q(t)的过程如下:
1. 对输入信号s(t)进行带通滤波,将其限制在10.6MHz~10.8MHz的频段内。这可以通过MATLAB中的fir1函数来实现:
```matlab
[b, a] = fir1(100, [10600000, 10800000]/(fs/2), 'bandpass');
s_filtered = filter(b, a, s);
```
其中,b和a分别是滤波器的系数,100是滤波器的阶数,[10600000, 10800000]/(fs/2)是滤波器的通带截止频率,'bandpass'表示带通滤波。
2. 将输入信号进行复数变换,得到复数信号s_c(t)。由于MATLAB中的复数数据类型是complex double,因此需要将输入信号转换为double类型:
```matlab
s_c = double(s_filtered) .* exp(-1i * 2 * pi * fc * t);
```
其中,t为时间向量,exp(-1i * 2 * pi * fc * t)表示复数旋转因子。
3. 对复数信号进行低通滤波,得到I路信号i(t)和Q路信号q(t)。I路信号可以通过将复数信号乘以1/sqrt(2)得到,Q路信号可以通过将复数信号乘以1i/sqrt(2)得到。然后分别对两个信号进行低通滤波,得到解调后的信号:
```matlab
i = filter(fir1(100, 100000/(fs/2), 'low'), 1, real(s_c)) * sqrt(2);
q = filter(fir1(100, 100000/(fs/2), 'low'), 1, imag(s_c)) * sqrt(2);
```
其中,fir1函数用于生成低通滤波器的系数,100000是低通滤波器的截止频率。
最终得到的i(t)和q(t)即为正交解调后的信号。
阅读全文