基于MATLAB的OQPSK调制解调实现课程设计

发布时间 : 星期一 文章基于MATLAB的OQPSK调制解调实现课程设计更新完毕开始阅读

附录1:OQPSK调制与解调程序清单

%程序1名称:oqpsk.m

%程序1功能:产生四进制数字基带信号,实现OQPSK调制、产生调制后波形图及频谱图、对调制信号添加不同信噪比的噪声、实现OQPSK解调、查看错码个数和误码率。 %程序1作者:周翌 %最后修改时间:2014-1-10 %===================== 程序1代码:

a=100; %基带信号码元个数

x = randint(a,1,[0 3]); % 随机产生a个四进制数

figure(1)

stairs(x) %基带信号

y =oqpskmod(x);% 进行oqpsk调制 scatterplot(y) %解调信号的星座图 fc=100; %载波频率 fs=1600; %抽样频率 b=0; %设置初始相位为0

s=0; %调制信号的波形图纵坐标初始化 n=0; %调制信号波形图二维初始化 snr=10.01; %信噪比

for i=1:a %判断星座图上值的象限位置,以确定相位 if real(y(i))>0 & imag(y(i))>0

b=(pi)/4; %第一象限,取相位为(pi)/4 end;

if real(y(i))<0 & imag(y(i))>0

b=(3*pi)/4; %第二象限,取相位为(3*pi)/4 end;

if real(y(i))<0 & imag(y(i))<0

b=(5*pi)/4; %第三象限,取相位为(5*pi)/4 end;

if real(y(i))>0 & imag(y(i))<0

b=(7*pi)/4; %第四象限,取相位为(7*pi)/4 end;

if real(y(i))>0 & imag(y(i))==0

b=0; %在实轴正轴上,取相位为0 end;

if real(y(i))<0 & imag(y(i))==0

b=pi; %在实轴负轴上,取相位为pi end;

if real(y(i))==0 & imag(y(i))>0

b=pi/2; %在虚轴正轴上,取相位为pi/2

end;

if real(y(i))==0 & imag(y(i))<0

b=(3*pi)/2; %在虚轴负轴上,取相位为(3*pi)/2 end;

for k=0:15 %取16个点画出波形图 m=(2*pi*fc*k)/fs+b; %合相位 s=sin(m); %生成波形图 n=[n sin(m)]; %将一维转换为二维 end; end;

g=1:length(n); %调制信号横坐标 figure(3)

plot(g,n) %调制信号波形图 noi=n +awgn(n,snr); %加入高斯噪声 figure(4)

plot(noi); %加入噪声后的调制信号 k=oqpskdemod(y); %解调信号 figure(5)

stairs(k) %解调信号

r=fft(x,1024); %对基带信号进行傅里叶变换 fr=(0:length(r)-1)*fs/length(r)-fs/2; %横坐标为频域 figure(6)

plot(fr,abs(r)); % OQPSK基带信号频谱图 xlabel('Frequency (Hz)')

s1=fft(n,1024); %调制信号频谱图

fs1=(0:length(s1)-1)*fs/length(s1)-fs/2; %横坐标为频域 figure(7)

plot(fs1,abs(s1)); %OQPSK调制信号频谱图 xlabel('Frequency (Hz)')

s2=fft(noi,1024); %加入噪声后OQPSK调制后的频谱图 fs2=(0:length(s2)-1)*fs/length(s2)-fs/2; %横坐标为频域

figure(8)

plot(fs2,abs(s2)) %加入噪声后OQPSK调制后的频谱图 xlabel('Frequency (Hz)')

jtpp=fft(k,1024); %解调信号的傅里叶变换

fj=(0:length(jtpp)-1)*fs/length(jtpp)-fs/2; %横坐标为频域 figure(9)

plot(fj,abs(jtpp)) %解调信号的频谱图 xlabel('Frequency (Hz)')

xx=awgn(y,snr); %对调制信号加入噪声

jjt=oqpskdemod(xx);%对加入噪声的调制信号进行解调 figure(10) %加入噪声后的解调信号 stairs(jjt)

jjtp=fft(jjt,1024); %求加入噪声后解调频谱

fp=(0:length(jjtp)-1)*fs/length(jjtp)-fs/2; %横坐标为频域 figure(11) %加入噪声后解调频谱图 plot(fp,abs(jjtp)) xlabel('Frequency (Hz)')

[num,ratio]=symerr(x,jjt) %计算错码个数num及误码率ratio

联系合同范文客服:xxxxx#qq.com(#替换为@)