首页/文章/ 详情

通信原理与matlab仿 编码调制一起来(1)

4年前浏览4573

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 修订内容;

MATLAB电子系统仿真
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2019-07-16
最近编辑:4年前
算法工匠
博士后 | 高级工程师 诚信做事 认真讲课 传播知识
获赞 381粉丝 2469文章 239课程 38
点赞
收藏
未登录
3条评论
lubin
☯️
3年前
{d83d}{dc4d}
回复
问渠哪得清如许
签名征集中
4年前
特别棒
回复
熊猫盖饭
签名征集中
4年前
蔡老师这个文章写的很好
回复

课程
培训
服务
行家

VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈