于是增加了通信模型的理论仿真,这是通信基础知识,也是本课程的基础知识!必须要有这个仿真!以前为什么没讲?因为我以为大家都会在学《通信原理》的时候掌握这个最最基础的知识点!但事实并非如此!很多专业都不再学习《通信原理》课程了,那么就在本门课程中补点通信的基础知识吧!毕竟当下社会离不开通信。那么通信模型的纯理论的仿真程序是什么样子?先看代码吧。
EsNo = 7;
% 蒙特卡洛仿真
% 请查找资料,了解什么是蒙特卡洛仿真?
for counter = 1:100
txData = randi([0 1],500,1); % Generate data 信源
% 调制方式 PSK
modSig = bpskModulator(txData); % Modulate 发射机
rxSig = awgn(modSig,EsNo); % Pass through AWGN 传输
rxData = bpskDemodulator(rxSig); % Demodulate 接收机
errorStats = errorRate(txData,rxData);
% Collect error stats 信宿 以误码率比对的方式出现!
end
fprintf('Error rate = %f Number of errors = %d ', errorStats(1), errorStats(2))
% 请掌握上述函数!函数非常实用!
% 观察星座图
scatterplot(modSig)
% 观察信号的常用函数!必须掌握!
%%%%%%%%%% 增加相位差
% Create binary data symbols
data = randi([0 1],50000,1);
% Create a BPSK modulator System object
bpskModulator = comm.BPSKModulator;
bpskDemodulator = comm.BPSKDemodulator;
% Change the phase offset to pi/16
bpskModulator.PhaseOffset = pi/6;
% Modulate and plot the data
modData = bpskModulator(data);
scatterplot(modData) % 观察信号
% add noise
% 高斯白噪声
Sig_awgn = awgn(modData,EsNo+1);
% Demodulate the data
demodData = bpskDemodulator(Sig_awgn);
% compare data
figure
plot(demodData-data)
% 误码率的等效写法
err_num = sum(abs(demodData-data))
biterr_rate = err_num/length(data)
aaa = 1; % 断点语句
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !