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

📄 qam16.m

📁 本程序实现产生几种调制方式的眼图并且对其进行比较
💻 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 + -