⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpfsk.m

📁 MATLAB仿真CPSFK,请大家参考。
💻 M
字号:
%变量定义
N=100;                          %信源信息比特流长度
f=20;                           %基带频率,就是比特符号变化的频率bit/s
carryFreq=450;                  %载频
offsetFreq=100;                 %移频
fs=8000;                        %采样率

f0 = carryFreq - offsetFreq;	% low frequency map to bit 0,0对应的载频
f1 = carryFreq + offsetFreq;	% high frequency map to bit 1,1对应的载频

sampingstream=zeros(1,0);       %经过fs采样后得到的数据点,长度以后随机确定,不同调制方式不同

%产生比特数据点
for n1=1:N
    bitstream(n1)=binornd(1,0.5,1,1);	%产生0、1的随机数
end
figure(1)
stem(bitstream)
title('随机产生的比特点')

%产生连续相位调制信号,并用fs的采样率采样
phase=0;                        %相位,由于相位连续,由一个全局变量控制
totaltime=N/f;                  %产生比特序列的持续时间
sampingstream2=zeros(1,0);      %采样后的比特序列

Ts=1/fs;
addf0=2*f0/fs;                  %f0载频时(对应信号0),每一次采样相位增加值
addf1=2*f1/fs;                  %f1载频时(对应信号1),每一次采样相位增加值
for t=0:totaltime*fs-Ts;
    bit=bitstream(floor(t*f/fs)+1);	%取出对应时间时的信号值
    if bit == 0
        phase=phase+addf0;		%相位增加
    else
        phase=phase+addf1;		%相位增加
    end
    sampingstream2=[sampingstream2,cos(phase)];	%采样序列增加
end
figure(5)
plot(sampingstream2)
axis([0.85*fs 1.2*fs -1.2 1.2]);
title('CPFSK局部放大的时域波形')

%频谱计算
len=length(sampingstream2);		%计算数据长度
XF=fft(sampingstream2,len);		%FFT变换
F=fftshift(XF);                 %将变换后的数据恢复正常序列
w=-fs/2+(0:len-1)*fs/len;		%将其0-pi的坐标转换成频率
figure(6)
plot(w,abs(F))
title('CPFSK频谱')
xlabel('频率/Hz')
axis([0 fs/2 0 3000]);			%画图坐标,缩小可以局部放大

%功率谱计算
pxx2=abs(XF).^2/len;
index=0:round(len/2-1);
fx=index*fs/len;
figure(7)
plot(fx,10*log(pxx2(index+1)));
axis([0,fs/2 -60 60])
title('CPFSK功率谱')
xlabel('频率/Hz')

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -