2007的matlab中有一个fskmod和fskdemod函数。其中的nsamp参数很让人疑惑。最后我受不了了,把这两个函数进行了修改,才获得了期望的结果。论述如下:
首先,对于数字调制,基本原理就是
S(t)=Re[(Y1(t)+jY2(t))exp(j*sita0)exp(j2*pi*Fc*t)]
而函数的输出,就是
y(t)=(Y1(t)+jY2(t))exp(j*sita0)
I/Q信号,就可以认为是y(t)的实部和虚部。
再看fskmod函数:
fskmod(x,M,freq_sep,nsamp)
- x:输入信号,取值0~M-1;
- M:symbol。2的k次方。
- Freq_sep:最近的频点间差值;
- Nsamp:这个要特别注意。它不是y输出简单的采样频率。通过对输出y的FFT,绘制频谱,可以看到,这个nsamp的增加,并不会带来频域的上下限的增加。频域上下限还只是2/Ts。只不过增加了频谱图的分辨率。倒是有些像FFT算法里面的补0算法。在matlab的帮助中,有这样一句:“nsamp
denotes the number of samples per symbol in y and must be a
positive integer greater than 1. The sampling rate of y is 1
Hz”.注意,不论nsamp是多大的值,y的采样率都是1,也就是说,对y做FFT,带宽都是1/Ts。那这个n