📄 cpfsk.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 + -