概述
目录
1 相关原理
2 代码仿真
3 参考资料
1 相关原理
首先,给出一般的数字通信系统框架如下:
BPSK是二进制相移键控,是最基本的调制方式,往往在进行仿真实现的时候,不需要加密、信道
编码、匹配滤波、同步等模块。简单来说,可将信源产生的0、1比特采用双极性码元(+1,-1)
来代替,形成一种简单的映射关系:
双极性 | 相位 |
+1 | 0 |
-1 |
下图给出了两路信号,即QPSK的调制解调过程,本次实验BPSK,只需要一路信号即可。本次实
验采用的信道为高斯白噪声加性信道。
发送端首先产生一串比特流,经过双极性码映射之后,与cos(wt)相乘,得到发送的三角波形,之
后信号经过高斯信道,接收端接到信号与cos(wt)相乘,之后经过积分判决变成比特流。这时候比
较该比特流与发送端产生的比特流,观察误码结果。
2 代码仿真
主函数:
clc;
clear all;
close all;
%% BPSK 调制解调系统的仿真
% 参数初始化
Fs = 20; % 采样频率
Tb = 1; % 一个符号持续的时间
fc = 5; % 载波的频率
snrdB = -3; %
N = input('The length of your bit streams:'); %输入的比特数量
message = randi([0 1],1,N);
message_to_symbol = 2 * message -1; % 符号映射;
modulation_signal = BPSK_modulation(message_to_symbol,Fs,Tb,fc); % 调制
Receive_symbol = awgn(modulation_signal,snrdB); % 高斯白噪声信道
demodulation_signal = BPSK_demodulation(N,Receive_symbol,Fs,Tb,fc); % 解调
Estimated_Receive_data = demodulation_signal>0; % 信号还原
error_bit = sum(Estimated_Receive_data~= message); % 计算误比特数目
figure_photo = figure_p(message,modulation_signal,demodulation_signal,Fs,Tb); % 画图
disp(['error_bit_number = ',num2str(error_bit)]);
辅助函数:
(1)调制函数:
function [modulation_sig] =BPSK_modulation(symbols,fs,t,fc)
%UNTITLED2 此处显示有关此函数的摘要
% 此处显示详细说明
len = length(symbols);
dt = 0:1/fs:t-1/fs;
sig_carry =[];
for i = 1:len
sig_carry =[sig_carry,symbols(i)*cos(2*pi*fc*dt)];
end
modulation_sig = sig_carry;
end
(2)解调函数
function [es_symbols] = BPSK_demodulation(lens,R_symbol,fs,T,fc)
%UNTITLED3 此处显示有关此函数的摘要
% 此处显示详细说明
r_s = [];
dt = 0:1/fs:T-1/fs;
for i = 1 : lens
r = R_symbol(1,(i-1)*length(dt)+1:i*length(dt)).*cos(2*pi*fc*dt);
if sum(r) > 0
r_s(i) = 1;
else
r_s(i) = -1;
end
end
es_symbols = r_s;
end
(3)绘图函数
function [rtt] = figure_p(message,modulation_signal,demodulation_signal,Fs,Tb)
%UNTITLED4 此处显示有关此函数的摘要
% 此处显示详细说明
len1 = length(message);
t1 = 0:1/Fs:len1*Tb-1/Fs;
sym = 2*message - 1;
mes_to_sym = [];
est_sym = [];
for i =1 :len1
mes_to_sym = [mes_to_sym, sym(i) * ones(1,Fs)];
est_sym = [est_sym,demodulation_signal(i) * ones(1,Fs)];
end
figure;
subplot(3,1,1);
plot(t1,mes_to_sym); legend('Symbols') %比特信息
title('原始信号的双极性码元图');
subplot(3,1,2);
plot(t1,modulation_signal); legend('Symbols_carrier') %载波
title('调制波形图');
subplot(3,1,3);
plot(t1,est_sym);legend('Symbols_demolution'); %载波
title('解调信号的双极性码元图');
rtt = 1;
end
(4)实验结果
码长为10:
码长为50:
码长为100
相关不足之处:本人本次的仿真实验,仿真的步骤简单,仿真的码字数目很小,在很大程度上不符
合实际的通信系统,但是,通过本次自己动手编写程序和调试,对BPSK有进一步的认识和理解,
各位多多包涵,也从其他博主学到很多有用的知识,感激不尽。
3 参考资料
1 以上图片均来自网络,非本人原创
2 QPSK调制与解调(matlab,详细介绍仿真方案的设计、结果及结论、完整代码及注释)
最后
以上就是大力太阳为你收集整理的Matlab 下的 高斯信道BPSK通带通信系统的简单仿真目录1 相关原理2 代码仿真3 参考资料的全部内容,希望文章能够帮你解决Matlab 下的 高斯信道BPSK通带通信系统的简单仿真目录1 相关原理2 代码仿真3 参考资料所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复