继续讲解!同学们第一次写CRC校验程序,老师自然会非常细致的讲,好的开始就是成功的一半。写的时候要仔细哦,不然程序就无法调试通过!但接下来的实验程序我就不会这么详细的讲了,给大家程序然后请同学进行自行消化,看各位的理解能力和学习态度了。大学期间必须培养同学们的自学能力,同时大家也要有自我培养的意识。2022年9月,发现同学们都没有MATLAB软件的基础知识,有点头大了。于是只能从最基础的知识讲起(结合具体程序讲解)!好在经过一个月的教学,大家都入门了,算是心安了!
如何生成m序列呢?先给出函数程序。
%%%******* 函数模块程序 ****%%
%%% File : funct_mseq_2015.m
%% date:2016-11-10 author:算法工匠
%% 函数名 %%
function [mout] = funct_mseq_2015(stg, taps, inidata)
%%%% 程序说明 %%%%
%%% 利用级联移位寄存器生成stg阶m序列
%%%% 参数定义 %%%%
% stg : Number of stages
% taps : Position of register feedback
% inidata : Initial sequence in register
% n : Number of output sequence(It can be omitted)
% mout : output M sequence
% *******************************
% An example
% stg = 3
% taps = [ 1 , 3 ]
% inidata = [ 1 , 1 , 1 ] % 初相 即寄存器的初始值
% n = 2
% m序列生成器的结构如下:
% ----------+--------------------
% | | |
% --> | 1 |--->| 2 |---->| 3 |---->比特输出
% 生成多项式: 1 + x + x^3
%
% 程序版本:R2015
%******* 函数主体 *********%
mout = zeros(1,2^stg-1);
fpos = zeros(stg,1);
% fpos(taps) = 1;
% 寄存器状态载入 taps = [1,3]; fpos(taps) = [1,0,1] matlab老版本函数
for i= length(taps)
fpos(taps(i)) = 1;
end
for ii=1:2^stg-1
mout(ii) = inidata(stg); % storage of the output data
num = mod(inidata*fpos,2); % calculation of the feedback data
inidata(2:stg) = inidata(1:stg-1); % one shifts the register
inidata(1) = num; % return feedback data
end
%**************** end of file **********************
我国自研的卫星通信系统!
军民两用!
当年本人参与过的项目!
我的徒弟也参与了这个项目!
海格和华力创通都是上市公司,
大家可以去查询一下,看看这两家公司有没有天通系统的相关产品!也就点到这吧!后面有机会多在课堂上讲讲卫星通信的知识。开阔眼界很重要。
再给出函数的测试程序!
%*********** 函数测试程序 ************%
%%% File: test_funct_mseq_2015.m %%
% date: 2016-12-20 author: nanjing xiaozhuang electronic %%
%%% 程序说明
% 测试函数function_funct_mseq_2015的运行结果。
% 观察生成m序列的相关特性。
% 程序版本:R2015b
%%************ 程序主体 **************%%
%%%%%%%% 自编m序列
%%% m序列初始状态
stg = 8;
taps= [1 8];
inidata = [1 0 1 1 1 1 0 1]; % 初始相位
m_sequence = funct_mseq_2015(stg, taps, inidata);
% m_sequence取值为0和1。
xcorr_mseq = xcorr(2*m_sequence-1);
stg = 9;
taps= [1 3 9];
inidata = [1 0 1 1 0 1 1 0 1];
m_sequence1 = funct_mseq_2015(stg, taps, inidata);
xcorr_mseq1 = xcorr(2*m_sequence1-1);
figure(1)
plot(xcorr_mseq)
title('自相关值')
figure(2)
plot(xcorr_mseq1)
title('自相关值')
%%% GPS中的m序列
% Generate G1 code
g1 = zeros(1,1023);
% load shift register
reg = -ones(1,10); % 初始相位
for i = 1:1023
g1(i) = reg(10);
slave1 = reg(3)*reg(10);
reg(1,2:10) = reg(19); % 移位
reg(1) = slave1;
end
% g1取值为正负1。
xcorr_g1 = xcorr(g1);
figure(3)
plot(xcorr_g1)
title('自相关值')
% Generate G2 code
g2 = zeros(1,1023);
% load shift register
reg = -ones(1,10);
%
for i = 1:1023
g2(i) = reg(10);
slave2 = reg(2)*reg(3)*reg(6)*reg(8)*reg(9)*reg(10);
reg(1,2:10) = reg(19);
reg(1) = slave2;
end
% g2取值为正负1。
xcorr_g2 = xcorr(g2);
figure(4)
plot(xcorr_g2)
title('自相关值')
%%% 结论
% 测试结果见图形。
% 通过自相关值的结果就可以看成哪些m序列的自相关性比较好。
% 所以需要寻找好的生成多项式和初相。(同学们能理解吗?)
%自编的m序列的自相关性效果就很差。
% 2016-12-22
未完,待续!
修订记录
20181028 完成初稿;
20221111 修订内容v2;经历了从光棍节到购物节的转变!
-
通信网络
+关注
关注
21文章
2028浏览量
51972
原文标题:计算机通信与网络v2 实验课程(10)
文章出处:【微信号:gh_30373fc74387,微信公众号:通信工程师专辑】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论