📄 qam16.m
字号:
data_bit=randint(1,2000);
for i=1:4:length(data_bit)-3
if data_bit(i)==0 & data_bit(i+1)==0 & data_bit(i+2)==0 & data_bit(i+3)==0
sym_i((i+3)/4)=3;
sym_q((i+3)/4)=3;
elseif data_bit(i)==0 & data_bit(i+1)==0 & data_bit(i+2)==0 & data_bit(i+3)==1
sym_i((i+3)/4)=3;
sym_q((i+3)/4)=1;
elseif data_bit(i)==0 & data_bit(i+1)==1 & data_bit(i+2)==0 & data_bit(i+3)==1
sym_i((i+3)/4)=3;
sym_q((i+3)/4)=-1;
elseif data_bit(i)==0 & data_bit(i+1)==1 & data_bit(i+2)==0 & data_bit(i+3)==0
sym_i((i+3)/4)=3;
sym_q((i+3)/4)=-3;
elseif data_bit(i)==0 & data_bit(i+1)==0 & data_bit(i+2)==1 & data_bit(i+3)==0
sym_i((i+3)/4)=1;
sym_q((i+3)/4)=3;
elseif data_bit(i)==0 & data_bit(i+1)==0 & data_bit(i+2)==1 & data_bit(i+3)==1
sym_i((i+3)/4)=1;
sym_q((i+3)/4)=1;
elseif data_bit(i)==0 & data_bit(i+1)==1 & data_bit(i+2)==1 & data_bit(i+3)==1
sym_i((i+3)/4)=1;
sym_q((i+3)/4)=-1;
elseif data_bit(i)==0 & data_bit(i+1)==1 & data_bit(i+2)==1 & data_bit(i+3)==0
sym_i((i+3)/4)=1;
sym_q((i+3)/4)=-3;
elseif data_bit(i)==1 & data_bit(i+1)==0 & data_bit(i+2)==1 & data_bit(i+3)==0
sym_i((i+3)/4)=-1;
sym_q((i+3)/4)=3;
elseif data_bit(i)==1 & data_bit(i+1)==0 & data_bit(i+2)==1 & data_bit(i+3)==1
sym_i((i+3)/4)=-1;
sym_q((i+3)/4)=1;
elseif data_bit(i)==1 & data_bit(i+1)==1 & data_bit(i+2)==1 & data_bit(i+3)==1
sym_i((i+3)/4)=-1;
sym_q((i+3)/4)=-1;
elseif data_bit(i)==1 & data_bit(i+1)==1 & data_bit(i+2)==1 & data_bit(i+3)==0
sym_i((i+3)/4)=-1;
sym_q((i+3)/4)=-3;
elseif data_bit(i)==1 & data_bit(i+1)==0 & data_bit(i+2)==0 & data_bit(i+3)==0
sym_i((i+3)/4)=-3;
sym_q((i+3)/4)=3;
elseif data_bit(i)==1 & data_bit(i+1)==0 & data_bit(i+2)==0 & data_bit(i+3)==1
sym_i((i+3)/4)=-3;
sym_q((i+3)/4)=1;
elseif data_bit(i)==1 & data_bit(i+1)==1 & data_bit(i+2)==0 & data_bit(i+3)==1
sym_i((i+3)/4)=-3;
sym_q((i+3)/4)=-1;
elseif data_bit(i)==1 & data_bit(i+1)==1 & data_bit(i+2)==0 & data_bit(i+3)==0
sym_i((i+3)/4)=-3;
sym_q((i+3)/4)=-3;
end
end
figure(8);
t=0:9;
subplot(2,1,1);
stem(t,sym_i(1:10),'.');
title('I路原始信号');
xlabel('t /s');
ylabel('信号幅度');
subplot(2,1,2);
stem(t,sym_q(1:10),'.');
title('Q路原始信号');
xlabel('t /s');
ylabel('信号幅度');
t2=-3:0.05:3;
g2=sin(pi*t2)./(pi*t2);
g2((length(t2)-1)/2+1)=1;
figure(9);
stem(t2,g2,'.');
%20倍过采样,过采样点数应为上面的sinc函数从0到第一个零点间的样点数,
%才能保证符号间无串扰
N2=20;
sym2_i=zeros(1,N2*length(sym_i));
sym2_q=zeros(1,N2*length(sym_q));
for i=1:length(sym_i)
sym2_i(i*N2-(N2-1))=sym_i(i);
sym2_q(i*N2-(N2-1))=sym_q(i);
end
symi=conv(sym2_i,g2);
symq=conv(sym2_q,g2);
figure(10);
subplot(2,1,1);
t23=0:1/N2:(length(symi)-1)/N2;
plot(t23(1:280),symi(1:280),'.');
hold on;
i=61:20:261;
stem(t23(i),symi(i),'.r');
title('I路sinc函数成形');
xlabel('t /s');
ylabel('信号幅度');
subplot(2,1,2);
t23=0:1/N2:(length(symq)-1)/N2;
plot(t23(1:280),symq(1:280),'.');
hold on;
i=61:20:261;
stem(t23(i),symq(i),'.r');
title('Q路sinc函数成形');
xlabel('t /s');
ylabel('信号幅度');
%输出前有60个点(滤波器阶数的一半)的滤波器输出延迟
delay=floor(length(g2)/2);
%去掉滤波器输出延时
out_symi(1:length(symi)-2*delay)=symi(delay+1:length(symi)-delay);
out_symq(1:length(symq)-2*delay)=symq(delay+1:length(symq)-delay);
figure(11);
subplot(2,1,1);
t22=0:1/N2:(length(out_symi)-1)/N2;
plot(t22(1:200),out_symi(1:200),'.');
hold on;
i=1:N2:10*N2+1;
stem(t22(i),out_symi(i),'.r');
title('去掉滤波器输出延迟之后的I路波形');
xlabel('t /s');
ylabel('信号幅度');
subplot(2,1,2);
t22=0:1/N2:(length(out_symq)-1)/N2;
plot(t22(1:200),out_symq(1:200),'.');
hold on;
i=1:N2:10*N2+1;
stem(t22(i),out_symq(i),'.r');
title('去掉滤波器输出延迟之后的Q路波形');
xlabel('t /s');
ylabel('信号幅度');
%乘载波
fc=3;
figure(12);
t2=0:1/N2:(length(out_symi)-1)/N2;;
fcos=cos(2*pi*fc*t2);
fsin=sin(2*pi*fc*t2);
symi_fc=fcos.*out_symi;
symq_fc=fsin.*out_symq;
subplot(3,1,1);
plot(t2(1:200),symi_fc(1:200));
title('I路载波信号');
xlabel('t /s');
ylabel('信号幅度');
subplot(3,1,2);
plot(t2(1:200),symq_fc(1:200));
title('Q路载波信号');
xlabel('t /s');
ylabel('信号幅度');
subplot(3,1,3);
plot(t2(1:200),symi_fc(1:200)+symq_fc(1:200));
title('I路Q路相加后的波形');
xlabel('t /s');
ylabel('信号幅度');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -