📄 exp4_1.m
字号:
clear;
clf;
clc;
%—— 产生随机‘0’,‘1’信号序列
N=2000;
N1=20;
fc=3;
data_bit=randint(1,N);
%—————————————— 作出QPSK的星座图——————————————
figure(1);
a=[-1/2,1/2];
b=[-1/2,1/2];
a1=-sqrt(2)/2:0.001:sqrt(2)/2;
b1=sqrt(1/2-a1.*a1);
plot(a1,b1,':.y');
hold on;
plot(a1,-b1,':.y');
a2=-1.5:0.001:1.5;
plot(a2,0,'.r');
b2=-1.2:0.001:1.2;
plot(0,b2,'.r');
for i=1:2
for j=1:2
plot(a(i),b(j),'b*');
hold on;
end
end
grid on;
title('QPSK星座图');
xlabel('I路信号幅度');
ylabel('Q路信号幅度');
text(a(1),b(1),' (11) ');
text(a(2),b(1),' (10) ');
text(a(1),b(2),' (01) ');
text(a(2),b(2),' (00) ');
axis([-1.5 1.5 -1 1]);
axis('equal');
%——将信号序列转换为基上的向量值
for i=1:2:N-1
if data_bit(i)==1 & data_bit(i+1)==1
sym_i((i+1)/2)=-1/2;
sym_q((i+1)/2)=-1/2;
elseif data_bit(i)==1 & data_bit(i+1)==0
sym_i((i+1)/2)=1/2;
sym_q((i+1)/2)=-1/2;
elseif data_bit(i)==0 & data_bit(i+1)==1
sym_i((i+1)/2)=-1/2;
sym_q((i+1)/2)=1/2;
elseif data_bit(i)==0 & data_bit(i+1)==0
sym_i((i+1)/2)=1/2;
sym_q((i+1)/2)=1/2;;
end
end
%——画出原始的I路与Q路信号
figure(2);
t=0:9;
subplot(2,1,1);
stem(t,sym_i(1:10),'.');
title('I路原始信号');
xlabel('t /s');
ylabel('信号幅度');
grid on;
subplot(2,1,2);
stem(t,sym_q(1:10),'.');
title('Q路原始信号');
xlabel('t /s');
ylabel('信号幅度');
grid on;
%——20倍过采样,过采样点数应为上面的矩形函数从0到第一个零点间的样点数,
%——才能保证符号间无串扰
%——在所产生星座信号序列每点间插入(N1-1)个值
sym2_i=zeros(1,N1*length(sym_i));
sym2_q=zeros(1,N1*length(sym_q));
for i=1:length(sym_i)
sym2_i(i*N1-(N1-1))=sym_i(i);
sym2_q(i*N1-(N1-1))=sym_q(i);
end
%——————————————构造矩形滤波器——————————————
t=-0.5:0.05:0.5;
h0=(t+1)-t;
figure(3);
stem(t,h0,'.');
title('矩形滤波器函数序列');
grid on;
delay0=floor(length(h0)/2);
%————————————构造sinc函数滤波器——————————————
t=-6:0.05:6;
h1=sin(pi*t)./(pi*t);
%——由于计算机没有0/0的定义,所以要另外附加此点的定义
h1(121)=1;
figure(4);
stem(t,h1,'.');
title('sinc滤波器函数序列');
grid on;
delay1=floor(length(h1)/2);
%——————————————构造平方根升余弦滤波器————————————
[h2,den] = rcosine(1,20,'fir/sqrt',0.5,4);
t=-4:0.05:4;
figure(5);
stem(t,h2,'.');
title('平方根升余弦函数序列');
grid on;
delay2=floor(length(h2)/2);
%————————————矩形滤波器调制QPSK信号————————————————
%——20倍过采样,过采样点数应为上面的矩形函数函数从0到1的样点数,
%——才能保证符号间无串扰
%——在所产生星座信号序列每点间插入(N1-1)个值
sym2_i0=zeros(1,N1*length(sym_i));
sym2_q0=zeros(1,N1*length(sym_q));
for i=1:length(sym_i)
sym2_i0(i*N1-(N1-1))=sym_i(i);
sym2_q0(i*N1-(N1-1))=sym_q(i);
end
symi0=conv(sym2_i0,h0); %——I路信号序列与冲击函数卷积
symq0=conv(sym2_q0,h0); %——Q路信号序列与冲击函数卷积
figure(6);
subplot(2,1,1);
t23=0:1/N1:(length(symi0)-1)/N1;
plot(t23(1:280),symi0(1:280));
hold on;
i=11:20:211;
stem(t23(i),symi0(i),'.r');
title('I路矩形函数成形');
xlabel('t /s');
ylabel('信号幅度');
grid on;
subplot(2,1,2);
t23=0:1/N1:(length(symq0)-1)/N1;
plot(t23(1:280),symq0(1:280));
hold on;
i=11:20:211;
stem(t23(i),symq0(i),'.r');
title('Q路矩形函数成形');
xlabel('t /s');
ylabel('信号幅度');
grid on;
%——去掉滤波器输出延时
out_symi0(1:length(symi0)-2*delay0)=symi0(delay0+1:length(symi0)-delay0);
out_symq0(1:length(symq0)-2*delay0)=symq0(delay0+1:length(symq0)-delay0);
figure(7);
subplot(2,1,1);
t22=0:1/N1:(length(out_symi0)-1)/N1;
plot(t22(1:200),out_symi0(1:200));
hold on;
i=1:N1:10*N1+1;
stem(t22(i),out_symi0(i),'.r');
title('去掉滤波器输出延迟之后的I路波形');
xlabel('t /s');
ylabel('信号幅度');
hold on;
grid on;
subplot(2,1,2);
t22=0:1/N1:(length(out_symq0)-1)/N1;
plot(t22(1:200),out_symq0(1:200));
hold on;
i=1:N1:10*N1+1;
stem(t22(i),out_symq0(i),'.r');
title('去掉滤波器输出延迟之后的Q路波形');
xlabel('t /s');
ylabel('信号幅度');
grid on;
%——调制原始信号序列
figure(8);
t2=0:1/N1:(length(out_symi0)-1)/N1;;
fcos0=cos(2*pi*fc*t2);
fsin0=sin(2*pi*fc*t2);
symi_fc0=fcos0.*out_symi0;
symq_fc0=fsin0.*out_symq0;
subplot(3,1,1);
plot(t2(1:200),symi_fc0(1:200));
title('I路载波信号');
xlabel('t /s');
ylabel('信号幅度');
grid on;
subplot(3,1,2);
plot(t2(1:200),symq_fc0(1:200));
title('Q路载波信号');
xlabel('t /s');
ylabel('信号幅度');
grid on;
subplot(3,1,3);
plot(t2(1:200),symi_fc0(1:200)+symq_fc0(1:200));
title('I路Q路相加后的波形');
xlabel('t /s');
ylabel('信号幅度');
grid on;
%————————————sinc函数滤波器调制QPSK信号————————————————
%——20倍过采样,过采样点数应为上面的sinc函数从0到第一个0点的样点数,
%——才能保证符号间无串扰
%——在所产生星座信号序列每点间插入(N1-1)个值
sym2_i1=zeros(1,N1*length(sym_i));
sym2_q1=zeros(1,N1*length(sym_q));
for i=1:length(sym_i)
sym2_i1(i*N1-(N1-1))=sym_i(i);
sym2_q1(i*N1-(N1-1))=sym_q(i);
end
symi1=conv(sym2_i1,h1); %——I路信号序列与冲击函数卷积
symq1=conv(sym2_q1,h1); %——Q路信号序列与冲击函数卷积
figure(9);
subplot(2,1,1);
t23=0:1/N1:(length(symi1)-1)/N1;
plot(t23(1:280),symi1(1:280));
hold on;
i=121:20:321;
stem(t23(i),symi1(i),'.r');
title('I路矩形函数成形');
xlabel('t /s');
ylabel('信号幅度');
grid on;
subplot(2,1,2);
t23=0:1/N1:(length(symq1)-1)/N1;
plot(t23(1:280),symq1(1:280));
hold on;
i=121:20:321;
stem(t23(i),symq1(i),'.r');
title('Q路矩形函数成形');
xlabel('t /s');
ylabel('信号幅度');
grid on;
%——去掉滤波器输出延时
out_symi1(1:length(symi1)-2*delay1)=symi1(delay1+1:length(symi1)-delay1);
out_symq1(1:length(symq1)-2*delay1)=symq1(delay1+1:length(symq1)-delay1);
figure(10);
subplot(2,1,1);
t22=0:1/N1:(length(out_symi1)-1)/N1;
plot(t22(1:200),out_symi1(1:200));
hold on;
i=1:N1:10*N1+1;
stem(t22(i),out_symi1(i),'.r');
title('去掉滤波器输出延迟之后的I路波形');
xlabel('t /s');
ylabel('信号幅度');
hold on;
grid on;
subplot(2,1,2);
t22=0:1/N1:(length(out_symq1)-1)/N1;
plot(t22(1:200),out_symq1(1:200));
hold on;
i=1:N1:10*N1+1;
stem(t22(i),out_symq1(i),'.r');
title('去掉滤波器输出延迟之后的Q路波形');
xlabel('t /s');
ylabel('信号幅度');
grid on;
%——调制原始信号序列
figure(11);
t2=0:1/N1:(length(out_symi1)-1)/N1;;
fcos1=cos(2*pi*fc*t2);
fsin1=sin(2*pi*fc*t2);
symi_fc1=fcos1.*out_symi1;
symq_fc1=fsin1.*out_symq1;
subplot(3,1,1);
plot(t2(1:200),symi_fc1(1:200));
title('I路载波信号');
xlabel('t /s');
ylabel('信号幅度');
grid on;
subplot(3,1,2);
plot(t2(1:200),symq_fc1(1:200));
title('Q路载波信号');
xlabel('t /s');
ylabel('信号幅度');
grid on;
subplot(3,1,3);
plot(t2(1:200),symi_fc1(1:200)+symq_fc1(1:200));
title('I路Q路相加后的波形');
xlabel('t /s');
ylabel('信号幅度');
grid on;
%————————————平方根升余弦函数滤波器调制QPSK信号————————————————
%——20倍过采样,过采样点数应为上面的平方根升余弦函数从0到第一个0点的样点数,
%——才能保证符号间无串扰
%——在所产生星座信号序列每点间插入(N1-1)个值
sym2_i2=zeros(1,N1*length(sym_i));
sym2_q2=zeros(1,N1*length(sym_q));
for i=1:length(sym_i)
sym2_i2(i*N1-(N1-1))=sym_i(i);
sym2_q2(i*N1-(N1-1))=sym_q(i);
end
symi2=conv(sym2_i2,h2); %——I路信号序列与冲击函数卷积
symq2=conv(sym2_q2,h2); %——Q路信号序列与冲击函数卷积
figure(12);
subplot(2,1,1);
t23=0:1/N1:(length(symi2)-1)/N1;
plot(t23(1:280),symi2(1:280));
hold on;
i=121:20:321;
stem(t23(i),symi2(i),'.r');
title('I路矩形函数成形');
xlabel('t /s');
ylabel('信号幅度');
grid on;
subplot(2,1,2);
t23=0:1/N1:(length(symq2)-1)/N1;
plot(t23(1:280),symq2(1:280));
hold on;
i=121:20:321;
stem(t23(i),symq2(i),'.r');
title('Q路矩形函数成形');
xlabel('t /s');
ylabel('信号幅度');
grid on;
%——去掉滤波器输出延时
out_symi2(1:length(symi2)-2*delay2)=symi2(delay2+1:length(symi2)-delay2);
out_symq2(1:length(symq2)-2*delay2)=symq2(delay2+1:length(symq2)-delay2);
figure(13);
subplot(2,1,1);
t22=0:1/N1:(length(out_symi2)-1)/N1;
plot(t22(1:200),out_symi2(1:200));
hold on;
i=1:N1:10*N1+1;
stem(t22(i),out_symi2(i),'.r');
title('去掉滤波器输出延迟之后的I路波形');
xlabel('t /s');
ylabel('信号幅度');
hold on;
grid on;
subplot(2,1,2);
t22=0:1/N1:(length(out_symq2)-1)/N1;
plot(t22(1:200),out_symq2(1:200));
hold on;
i=1:N1:10*N1+1;
stem(t22(i),out_symq2(i),'.r');
title('去掉滤波器输出延迟之后的Q路波形');
xlabel('t /s');
ylabel('信号幅度');
grid on;
%——调制原始信号序列
figure(14);
t2=0:1/N1:(length(out_symi2)-1)/N1;;
fcos2=cos(2*pi*fc*t2);
fsin2=sin(2*pi*fc*t2);
symi_fc2=fcos2.*out_symi2;
symq_fc2=fsin2.*out_symq2;
subplot(3,1,1);
plot(t2(1:200),symi_fc2(1:200));
title('I路载波信号');
xlabel('t /s');
ylabel('信号幅度');
grid on;
subplot(3,1,2);
plot(t2(1:200),symq_fc2(1:200));
title('Q路载波信号');
xlabel('t /s');
ylabel('信号幅度');
grid on;
subplot(3,1,3);
plot(t2(1:200),symi_fc2(1:200)+symq_fc2(1:200));
title('I路Q路相加后的波形');
xlabel('t /s');
ylabel('信号幅度');
grid on;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -