2018年12月了,本人的身体好一些了,但头依旧偏的厉害。不过可以坚持写作了,写作的时候必须带上护脖。
一起来看看含有编解码BPSK调制解调器的仿真程序是什么样子的吧。
%% BPSK调制解调器误码性能仿真程序 %%%%%%%
%%%%% BCHcode_BPSK_modem_sim1.m %%%%%
%% date: 2016-01-05 author: 算法工匠 %%%%
%%%%%%%%%% 程序说明
% 完成BPSK调制解调器的仿真,含有编解码。
% 比较不同信噪比下的误码性能。
% 通信体制具体内容如下:
% 调制方式:BPSK 编码方式:bch
% 滚降因子:0.5
% 解调方式:相干解调 译码方式:时域译码
% 噪声:加性高斯白噪声
% 中频信号仿真
%%% 仿真环境
% 软件版本:matlab 2015
% 有些函数已经不用,但依旧可以使用。
%%% sim系列说明之处
%
clear all;
close all;
format long;
%%********** 程序主体 **********
%%%%%%%%% 系统参数 %%%%%%%%%%
bit_rate = 1000;
symbol_rate = 1000;
fre_sample = 16000;
symbol_sample_rate = 16; % 一个符号内的采样倍数
fre_carrier = 4000;
%%%%% 信源 %%%%%%%%%
%%% 帧信息
% msg_source = randint(1,1000);
msg_source = randint(1,960); % 随机信号
% 通常帧头会采用扩频序列,为了方便调试,可以采用全1和全0。
%%% 帧头
frame_head = [ones(1,20) zeros(1,20)];
休息一下!
再来看看发射机的内容吧。
%%%%%%% 发射机 %%%%%%%%%%
%%%%%%% 编码器
%%% BCH编码
bch_m = 4;
bch_n = 2^bch_m-1; % Codeword length
bch_k = 5; % Message length
nwords = 10;
% Number of words to encode
%%% 函数应用示例
% rand_msg = randi([0 1], nwords, bch_k);
% msg = gf(rand_msg);
% msg_code = bchenc( msg, bch_n, bch_k); % Encode the message
%%% 串并转换
msg_source_reshape = reshape(msg_source,5,length(msg_source)/5);
msg_source_gf = gf(msg_source_reshape');
msg_source_code = bchenc(msg_source_gf, bch_n, bch_k); % Encode the message
% 只对帧内容进行编码
%%% 并串转换
msg_source_code_s = reshape( msg_source_code', 1, []);
%%% 伽罗华域转换为十进制数
msg_source_code_dec = ones(1,length(msg_source_code_s));
for i=1:length(msg_source_code_s)
if msg_source_code_s(i)==0
msg_source_code_dec(i) = 0;
else
msg_source_code_dec(i) = 1;
end
end
%%%% 组帧
frame_msg_code = [frame_head msg_source_code_dec];
%%%%%%% 调制器
%%% 双极性变换
bipolar_msg_source = 2*frame_msg_code - 1;
%%% 滤波器
% rcosflt 滚降成型滤波函数
rcos_msg_source = rcosflt(bipolar_msg_source,1000,16000); % Rolloff factor=0.5。
% 时域频域观察
fft_rcos_msg_source = abs(fft(rcos_msg_source));
figure(1)
plot(rcos_msg_source)
title('时域波形')
figure(2)
plot(fft_rcos_msg_source)
title('频域波形')
aaa = 1; % 调试断点
%%% 载波发送
time =[1:length(rcos_msg_source)];
rcos_msg_source_carrier = rcos_msg_source'.*cos(2*pi*fre_carrier.*time/fre_sample);
% 时域频域观察
fft_rcos_msg_source_carrier = abs(fft(rcos_msg_source_carrier));
figure(3)
plot(rcos_msg_source_carrier)
title('时域波形')
figure(4)
plot(fft_rcos_msg_source_carrier)
title('频域波形')
aaa = 1; % 调试断点
学无止境!
程序需要大家仔细的在matlab里面敲写一遍哦!
回忆在身体好时在图书馆看书的时光!
未完,待续!
修订记录
20181129 完成初稿;
20190715 修订内容;