资源简介

通信原理课程习题: 1.以2^10个二进制PRBS作为消息码,载波频率为2.4GHz,利用MATLAB画出QPSK调制波形的频谱图和星座图,其中码元速率为50MBaud/s 2.在上述生成的QPSK信号中引入高斯白噪声,调节SNR至10dB(或者其他认为合适的值)然后重新生成星座图,并计算误码率。(选做)

资源截图

代码片段和文件信息

%1.以2^10个二进制PRBS作为消息码,载波频率为2.4GHz,利用MATLAB画出QPSK调制波形的频谱图和星座图,其中码元速率为50MBaud/s
%2.在上述生成的QPSK信号中引入高斯白噪声,调节SNR至10dB(或者其他认为合适的值)然后重新生成星座图,并计算误码率。(选做)
%3.要求代码分成以下几个部分:
%Designed By :
function [] = homework3()
%% 生成伪随机码
pngen = commsrc.pn(‘NumBitsOut‘2^10); % 创建伪随机噪声发生包
data = generate(pngen); % 生成伪随机序列
fm = 50; % 波特率20MHz
Tm = 1/fm; % 码元周期
N_sample = 399; % 采样次数为3的倍数
fs=fm*N_sample;  %采样频率
N = N_sample*length(data); % 总采样点个数
dt=1/fs; % 时域采样间隔
df=fs/N; % 频域采样间隔
T = N*dt; % 截断时间
t = linspace(0TN); % 时域横坐标
Bs =fs/2; % 系统带宽
f = linspace(-BsBsN); % 频域横坐标
fc=2.4e3; % 载波2.4GHz
SNR_DB=(0:1:12); % 逐步改变信噪比
%% 生成两路调制信号
NRZ = [];           %并行信号
NRZ_0 = [];          %采样后的第一路串行信号
nrz_0 = [];         %采样前的第一路串行信号
NRZ_1 = [];          %采样后的第二路串行信号
nrz_1 = [];         %采样前的第二路串行信号
for k=1:length(data)      % 采样的同时也是对信号进行NRZ与RZ变换 
    for j=1:(N_sample)       % NRZ变换
        NRZ((k-1)*N_sample+j)=data(k);
    end   
end
for k=1:(length(data)-1)      % 采样的同时也是对信号进行串并行变化
    if (mod(k 2)==0)
        for j=1:(N_sample)       %  串行第一路信号采样
            if data(k)==1
                 NRZ_0((k-1)*N_sample+j)=1;
                 nrz_0(k)=1;
            else
                 NRZ_0((k-1)*N_sample+j)=-1;
                  nrz_0(k)=-1;
            end
        end
        for j=1:(N_sample)       %  串行第二路信号采样
            if data(k-1)==1
                 NRZ_1((k-1)*N_sample+j)=1;
                 nrz_1(k)=1;
            else
                 NRZ_1((k-1)*N_sample+j)=-1;
                 nrz_1(k)=-1;
            end
        end
    else
        for j=1:(N_sample)       %  串行第一路信号采样
            if data(k)==1
                 NRZ_1((k-1)*N_sample+j)=1;
                 nrz_1(k)=1;
            else
                 NRZ_1((k-1)*N_sample+j)=-1;
                 nrz_1(k)=-1;
            end
        end
        for j=1:(N_sample)       %  串行第二路信号采样
            if data(k+1)==1
                 NRZ_0((k-1)*N_sample+j)=1;
                 nrz_0(k)=1;
            else
                 NRZ_0((k-1)*N_sample+j)=-1;
                 nrz_0(k)=-1;
            end
        end
    end    
end
for j=1:(N_sample)       % 串行信号修正(补充对最后一个码元的采样)
    if data(length(data))==1
        NRZ_0((length(data)-1)*N_sample+j)=1;
        nrz_0(length(data))=1;
    else
        NRZ_0((length(data)-1)*N_sample+j)=-1;
        nrz_0(length(data))=-1;
    end
    if data(length(data)-1)==1
        NRZ_1((length(data)-1)*N_sample+j)=1;
        nrz_1(length(data))=1;
    else
        NRZ_1((length(data)-1)*N_sample+j)=-1;
        nrz_1(length(data))=-1;
end
end
%% 生成QPSK信号
mNRZ_0=NRZ_0.*sin(2*pi*fc*t);        % 第一路调制后的载波信号
mNRZ_1=NRZ_1.*cos(2*pi*fc*t);       % 第二路调制后的载波信号
QPSK = mNRZ_1-mNRZ_0;        % 生成QPSK调制信号

figure(1)       % 绘制波形图
subplot(3 3 1);plot((0:1:N_sample*length(data)-1)*dt/N_sample NRZ);grid on;axis([0 length(data)*dt -2 2]);title(‘并行信号波形‘);xlabel(‘S‘)
subplot(3 3 2);plot((0:1:N_sample*length(data)-1)*d

评论

共有 条评论