当前位置: 首页 > 工具软件 > πfs > 使用案例 >

dqpsk的matlab,谁能提供个π/4-DQPSK的调制与解调的matlab仿真

祁渊
2023-12-01

clc

clear all

%%%%%%%%%%%%%%%%%%%%%%%%%%%%初始化%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

T=1;                          % 符号时间

SNR=0;                        % 性噪比

fc=10/T;                       % 载波频率

len=100;                       % 信号个数

delta_T=T/100;                % 采样间隔

fs=1/delta_T;                 % 采样频率

t=0:delta_T:len*T-delta_T;

N=length(t);                  % 样本数目

%%%%%%%%%%%%%%%%%%%%%%%%%%%%产生二进制信号%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

data=randint(1,len,2);

datanrz=data.*2-1;            % 转换成双极性码

data_baseband=zeros(1,len/delta_T);

for q=1:len

data_baseband((q-1)/delta_T+1:q/delta_T)=datanrz(q);

end                           % 传输信号

data_spectrum=abs(fft(data_baseband));        %基带信号频谱

%串并转换

idata=datanrz(1:2:(len-1));

qdata=datanrz(2:2:len);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%QPSK调制%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

ich=zeros(1,len/2/delta_T);

for i=1:len/2

ich((i-1)/delta_T+1:i/delta_T)=idata(i);

end

for ii=1:N/2

a(ii)=sqrt(2/T)*cos(2*pi*fc*t(ii));

end

ich=ich.*a;                % I信道调制

qch=zeros(1,len/2/delta_T);

for j=1:len/2

qch((j-1)/delta_T+1:j/delta_T)=qdata(j);

end

for jj=1:N/2

b(jj)=sqrt(2/T)*sin(2*pi*fc*t(jj));

end

qch=qch.*b;                % Q-信道调制

QPSKdata=ich+qch;              % QPSK调制信号

QPSKdata_spectrum=abs(fft(QPSKdata));               % QPSK调制信号频谱

%%%%%%%%Rayleigh multipath/AWGN(Additive White Gaussian Noise)%%%%%%%%%%%%%

ray_ich=raylrnd(0.8,1,len/2/delta_T);

ray_qch=raylrnd(0.8,1,len/2/delta_T);

ich_ray=ich.*ray_ich;

qch_ray=qch.*ray_qch;

QPSKdata_ray=ich_ray+qch_ray;

QPSKdata_ch=awgn(QPSKdata_ray,SNR);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%QPSK 解调%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

idata1=QPSKdata_ch.*a;

qdata1=QPSKdata_ch.*b;                 % 相干解调

idata2=zeros(1,len/2);

qdata2=zeros(1,len/2);

for n=1:len/2

ichsum(n)=sum(idata1((n-1)/delta_T+1:n/delta_T))*delta_T;

if ichsum(n)>=0

idata2(n)=1;

else idata2(n)=0;

end

qchsum(n)=sum(qdata1((n-1)/delta_T+1:n/delta_T))*delta_T;

if qchsum(n)>=0

qdata2(n)=1;

else qdata2(n)=0;

end

end                          % 判决

%并串转换

demodata=zeros(1,len);

demodata(1:2:(len-1))=idata2;

demodata(2:2:len)=qdata4;

% 计算误差

num_BER=sum(abs(demodata-data))

%%%%%%%%%%%%%%%%%%%%%%%%%%%画图%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

h = spectrum.welch;

figure(1)

plot(data_baseband),title('基带信号');

figure(2)

plot(fftshift(QPSKdata_spectrum)),title('基带信号频谱');

figure(3)

psd(h,data_baseband,'fs',fs),title('基带信号功率普');

figure(4)

plot(QPSKdata),title('调制信号');

axis([0 500 -3 3]);

figure(5)

plot(fftshift(QPSKdata_spectrum)),title('调制信号频谱');

figure(6)

psd(h,QPSKdata,'fs',fs),title('调制信号功率普');

figure(7)

for i=1:len/2

plot(idata(i),qdata(i),'ro'),title('星座图');hold on;

axis([-2 2 -2 2]);

plot(ichsum(i),qchsum(i),'*');hold on;

legend('信道前','信道后');

end

这是QPSK的调制与解调你在二进制后面加一个差分编码就是DQPSK了

 类似资料: