matlab中CRC的函数使用
先学习一下matlab中CRC函数。
语法如下:
h = crc.generator(‘Polynomial', polynomial, ‘param1', val1, etc.)
再看一个例子就比较好容易理解,
% Construct a CRC generator with a polynomial defined
% by x^3+x+1, with zero initial states,
% and with an all-ones final XOR value:
h = crc.generator('Polynomial', [1 0 1 1], ...
'InitialState', [0 0 0], ...
'FinalXOR', [1 1 1])
Polynomial指的是CRC的生成多项式,上面的是二进制表示,同样可以用十六进制表示'0xb',和上面是等效的,InitialState指的是CRC的初始值,FinalXOR指的是最后的输出需不需要做异或,如果为全零其实就是保持原来的值,全1表示为把结果取反。
这里还有几个参数也按我的理解说一下。ReflectInput这是个布尔变量,当它为true时,进入移位寄存器是按byte进去的,所以要求多项式的长度必须是8的倍数。它的default值是false。
我项目中需要的一个例子如下:
h = crc_generator('Polynomial',[1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1],'InitialState',[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0],'FinalXOR',[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]);
%这个多项式为x^16+x^15+x^2+1,注意后面'InitialState'和'FinalXOR'的值都是16个0.
crc_din = 3;%这里是十进制,而且可以用load一个文件后面的几行就是为了load一个文件而处理的
crc_din_bi = de2bi(crc_din,2);%转换成2位的二进制,后面的2指的是2位
crc_din_trans = transpose(crc_din_bi);%这个函数的意思就是把crc_din_bi这个矩阵翻转,比如原来crc_din_bi是一个1x2的矩阵,翻转后变成2x1,前面是行数,后面是列数
crc_din_trans_reshape = reshape(crc_din_trans,[],1);%中间是一个方括号。reshaple的意思是把一个矩阵串起来,按照一列串起来
encoded = generate(h,crc_din_trans_reshape);%执行CRC
这个程序运行的结果是
1%原数据
1%原数据
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
0
后面16位就是输出的CRC值,其实就是0xa
如果要输出一个文件
fid = fopen('crc_out.txt','w+');
for cnt = 1 : size(encoded,1)
fprintf(fid,'%-d\n',encoded(cnt));
end
fclose(fid;)
matlab中CRC的函数使用的更多相关文章
- python实现类似于Matlab中的magic函数
参考这篇文章的代码封装了一个类似Matlab中的magic函数,用来生成魔方矩阵. #!/usr/bin/env python # -*- coding: utf-8 -*- import numpy ...
- matlab中的eval函数使用
matlab中的eval函数使用 在matlab的命令行窗口中输入help eval命令回车就可以看到eval函数的官方解释,大概的意思就是执行matlab中的表达式,计算expression表示的代 ...
- Matlab中的eig函数和Opecv中eigen()函数的区别
奇异值分解的理论参见下面的链接 http://www.cnblogs.com/pinard/p/6251584.html https://blog.csdn.net/shenziheng1/artic ...
- Matlab中的fread函数
Matlab中fread函数用法 "fread"以二进制形式,从文件读出数据. 语法1:[a,count]=fread(fid,size,precision) 语法2:[a, ...
- matlab中的sub2ind函数
在matlab中,矩阵的存储是按列优先,sub2ind函数将矩阵中指定元素的行列下标转换成存储的序号,即线性索引号.下面,我们举例子进行说明. 1 建立一个3*4*2的矩阵 rng(0,'twiste ...
- matlab中help所有函数功能的英文翻译
doc funname 在帮助浏览器中打开帮助文档 help funname 在命令窗口打开帮助文档 helpbrowser 直接打开帮助浏览器 lookfor funname 搜索某个关键字相关函数 ...
- MATLAB中的参数估计函数详解及调用示例【联合整理】
前言 因为最近项目上的需要,才发现MATLAB的统计工具箱中的参数估计函数,觉得很简单很好用,现在把所有的参数估计函数整理一下,并在最后面附上调用示例. 参与人员 由于时间关系,这篇随笔是两个人一起整 ...
- Matlab中利用null函数解齐次线性方程组
摘自:http://blog.csdn.net/masibuaa/article/details/8119032 有齐次线性方程AX=0,且rank(A)=r<n时,该方程有无穷多个解, 可以用 ...
- MATLAB中的set函数
1.MATLAB给每种对象的每一个属性规定了一个名字,称为属性名,而属性名的取值成为属性值.例如,LineStyle是曲线对象的一个属性名,它的值决定着线型,取值可以是'-' .':'.'-.'.'- ...
随机推荐
- VS中展开和折叠代码,还有其他快捷操作
[转]VS中展开和折叠代码 VS2005代码编辑器的展开和折叠代码确实很方便和实用.以下是展开代码和折叠代码所用到的快捷键,很常用: Ctrl + M + O: 折叠所有方法 Ctrl + M + ...
- 18 常用模块 random shutil shevle logging sys.stdin/out/err
random:随机数 (0, 1) 小数:random.random() ***[1, 10] 整数:random.randint(1, 10) *****[1, 10) 整数:random.rand ...
- js检测数据类型四种办法
面试题中经常会考js数据类型检测,今天我来分享一下js中常用的四种方法判断数据类型,欢迎指点更正. 废话不多说,直入正题. 1.typeof console.log(typeof "&quo ...
- js的事件冒泡,事件捕获
addEventListener() 方法可以指定 "useCapture" 参数来设置传递事件类型:false→冒泡 true→捕获 默认false. ...
- Spring 框架
一. Spring入门 Spring模块都打包成JAR文件,其命名格式如下: spring-maluleName-x.y.z.RELEASE.jar 其中module name是模块的名字,而x.y. ...
- iOS关键词weak和assign的区别
一.区别 首先说说在什么情况下使用 weak 关键字 1.ARC中,在有可能出现循环引用的时候,往往要通过让其中一端使用weak来解决,比如:delegate 的代理属性. 2.自身已经对它有过一次强 ...
- (三)Knockout 控制流程
foreach 示例1:迭代数组 foreach binding主要作用于lists或是tables内数据单元的动态绑定.下面是一个简单的例子: <table> <thead> ...
- 4.17 小发现(dalao勿点)
洛谷上: (1)iso::sync_with_stio(0); 虽然可以提高cin的速度; 但是有时会RE或WA(如果是WA一般提示Too shot on line); (2)函数最好写上return ...
- vue 获取dom的css属性值
<template> <div id="topInfo" ref="topInfo" style="width: 200px;hei ...
- django——中间件
1.中间件概念 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨慎实用,用不好会影响 ...