• 大小: 8KB
    文件类型: .m
    金币: 2
    下载: 1 次
    发布日期: 2021-06-02
  • 语言: Matlab
  • 标签: 16QAM  MATALB  

资源简介

信号源产生 0、 1 等概分布的随机信号,映射到 16QAM 的星座图上,同时一路信号已经被分成了 I 路和 Q 路,后边的处理建立在这两路信号的基础上。I 路和 Q 路信号分别经过平方根升余弦 滤波器,再加入高斯白噪声,然后通过匹配滤波器(平方根升余弦滤波器) 。最后经过 采样,判决,得到 0、1 信号,同原信号进行比较,给出 16QAM 数字系统的误码。

资源截图

代码片段和文件信息

clc
clear variables
close all

%% 随机信号的生成
%=====定义待仿真序列的维数
global N
N=10000;
%=====定义产生“1”的概率为p
global p
p=0.5;
%==========================
%首先产生随机二进制序列
source=randsrc(1N[10;p1-p]);
%===========================
%画出二进制序列
figure(1)
stem(source(11:50)‘filled‘);
title(‘随机二进制序列‘);
%=============================
%对产生的二进制序列进行QAM调制
[source1source2]=Qam_modulation(source);
%=============================
%画出星座图
figure(2)
scatter(source1source2‘b*‘);
title(‘16QAM星座图‘);
axis([-5 5 -5 5])
%==============================
%对两路信号进行插值
sig_insert1=insert_value(source18);
sig_insert2=insert_value(source28);
%===============================
%画出插值后两路信号的波形图
figure(3)
subplot(211);
plot(sig_insert1(11:80));
title(‘插值后两路信号的波形图:实部信号‘);
subplot(212);
plot(sig_insert2(11:80));
title(‘插值后两路信号的波形图:虚部信号‘);
%===============================
%通过低通滤波器
rolloff = 0.25;  % Filter rolloff
span = 6;        % Filter span
sps = 4;         % Samples per symbol
[sig_rcos1sig_rcos2]=rise_cos(sig_insert1sig_insert2rolloffspansps);
%===============================
%画出通过低通滤波器的两路波形图
figure(4)
subplot(211);
plot(sig_rcos1(11:80));
title(‘通过低通滤波器的两路波形图:实部信号‘);
subplot(212);
plot(sig_rcos2(11:80));
title(‘通过低通滤波器的两路波形图:虚部信号‘);
%=================================
%10倍载波调制
[tsig_modulate]=modulate_to_high(sig_rcos1sig_rcos20.252);
%=================================
%画出传输的实信号图形
figure(5)
plot(t(1:500)sig_modulate(1:500));
title(‘传输的实信号图形‘);
%=================================
%将滤波后的信号加入高斯白噪声
snr=10;
[x1x2]=generate_noise(sig_rcos1sig_rcos2snr);
sig_noise1=x1.‘;
sig_noise2=x2.‘;
%=================================
%画出加入高斯白噪声的波形
figure(6)
subplot(211);
plot(sig_noise1(1:80));
title(‘加入高斯白噪声的信号波形:实部信号‘);
subplot(212);
plot(sig_noise2(1:80));
title(‘加入高斯白噪声的信号波形:虚部信号‘);
%==================================
%经过匹配滤波器
[sig_match1sig_match2]=filt_match(sig_noise1sig_noise2rolloffspansps);
%===============================
%画出通过匹配滤波器的两路波形图
figure(7)
subplot(211);
plot(sig_match1(1:80));
title(‘通过匹配滤波器的两路波形图:实部信号‘);
subplot(212);
plot(sig_match2(1:80));
title(‘通过匹配滤波器的两路波形图:虚部信号‘);
%================================
%采样
% sample=8;
[x1x2]=pick_sig(sig_match1sig_match28);
sig_pick1=x1.‘;
sig_pick2=x2.‘;
%================================
%画出采样后的星座图
figure(8)
scatter(sig_pick1sig_pick2‘b*‘);
title(‘采样后的16QAM星座图‘);
axis([-5 5 -5 5])
%=================================
%解调
signal=demodulate_sig(sig_pick1sig_pick2);
%================================
%画出解调后的二进制信号
figure(9)
stem(signal(11:50));
title(‘解调后的二进制信号‘);
% %计算误bit率
% error_b=length(find(signal~=source))/N;


%% 误码率计算
% =======理论误bit率
snr=1:1:11;
error_theory=(1-(1-(2*(1-1/sqrt(16))*1/2*erfc(1/sqrt(2)*sqrt(3*4*10.^(snr/10)/(16-1))))).^2)/4;
% =======用理论的误bit率来决定需要仿真的点数
n=floor(1./error_theory)*1000+100;
n(n<5000)=5000;
% 开始仿真
for i=1:length(n)
% 首先产生随机二进制序列
source=randsrc(1n(i)[10;p1

评论

共有 条评论