matlab中CRC的函数使用

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

先学习一下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;)

史上最简单的matlabCRC函数使用(无繁杂参数) 第一步:生成多项式 poly = 'z4+z3+z2+z+1'; poly = 'z16+z12+z5+1'; poly='z8+z7+z6+z4+z2+1'; poly='z16+z15+z2+1' 根据自己所需,选择不同长度的CRC校验码。可百度查表可得。任意选一即可。上面依次是4,16,8,16码长的CRC。 第二步:构造CRC生成对象,和,校验对象 crcgenerator = comm.CRCGenerator(poly); crcdetector = comm.CRCDetector(poly 阅读详情

相关推荐

关于MATLAB自带的crc类和generate函数

crc.generator h = crc.generator(polynomial) 构造一个crc generator对象h,由参数 polynomial(生成多项式) 定义。 例: >>h = crc.generator([1 1 1 1 1]) ans = Type: CRC Generator Polynomial: 0xF InitialState: 0x0 ReflectInput: fals

芋头圆生煎的博客 9253

CRC_encoder.rar_CRC 8_crc_dvb_matlab

实现数字视频广播系统中的CRC-8编码的功能,包括两种实现方法。

crc16的c语言函数 计算ccitt_matlab和c语言的区别

MATLAB简介MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB和MathemaTIca、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程...

weixin_35935712的博客 265

MATLABCRC编解码程序

详细描述了MATLABCRC循环冗余校验的编解码程序,已经通过测试,能运行

CRC8matlab 实现.zip

简单易懂,有注释matlab

Simulink算法建模:CRC校验模型

本文研究CRC校验的Simulink模型及其代码生成。

u013288925的博客 8119

CRC校验(1):CRC原理、计算例子和最优多项式的选择

CRC校验在做项目的过程中经常会使用到,在我上大学的时候有浅浅地理解这个计算的过程,后面工作了就是直接用NXP SDK中写的软件CRC的代码。说实话,我看不懂这简简单单的几行CRC-32查表算法,但我不希望我只是会用这些函数,而是要理解其中的原理。所以我开始写这一系列的博客深入地研究和理解常见的一些算法,希望能有所收获。对于现在的CPU来说,大多都在硬件上实现了CRC校验,但我想从软件上来实现CRC32的查表算法,包括表格的生成和CRC的计算。

主要分享嵌入式软件、人工智能部分知识 1万+

matlabcrc,matlabCRC函数使用

先学习一下matlabCRC函数。语法如下: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...

weixin_42510182的博客 2231

matlab串行crc原理,matlabCRC函数使用

先学习一下matlabCRC函数。语法如下: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...

weixin_36313344的博客 333

MATLAB crc.generato,matlabCRC函数使用

先学习一下matlabCRC函数。语法如下: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...

weixin_35705382的博客 1330

CRC16 Matlab 函数

CRC16 Matlab 函数 去发现同类优质开源项目:https://gitcode.com/ 此仓库提供了CRC16算法的Matlab函数实现。该函数遵循modbus协议,能够有效控制电机等设备的通信。 资源描述 此资源包含的CRC16 Matlab函数,适用于modbus协议环境,能够帮助开发者在Matlab平台上进行电机控制相关的开发工作。 使用说明 下载后,您可以将该函数集成到您的Mat...

gitblog_06738的博客 378

CRC16Matlab函数:项目核心功能/场景

CRC16Matlab函数:项目核心功能/场景 去发现同类优质开源项目:https://gitcode.com/ 在自动化控制与通信领域,确保数据传输的准确无误至关重要。CRC16Matlab函数正是为此而生,它提供了一种在Matlab环境下实现CRC16算法的方法,特别适用于遵循modbus协议的电机控制等设备的通信。 项目介绍 CRC16Matlab函数是一个开源项目,专注于为Matlab用户...

gitblog_06714的博客 337

MATLAB源码-第22期】基于matlab的手动实现的(未调用内置函数CRC循环码编码译码仿真。

如果未除尽,则在寄存器中的内容就是错误图样,根据错误图样可以确定一种逻辑,来确定差错的位置,从而达到纠错的目的。循环码的优点是没有瞬时错误,因为在数码变换过程中,在速度上会有快有慢,中间经过其它一些数码形式,称它们为瞬时错误这在某些数字系统中是不允许的,为此希望相邻两个数码之间仅有一位码元不同,即满足邻接条件,这样就不会产生瞬时错误。它不但可以检测随机的错误,还可以检错突发的错误。循环码最大的特点就是码字的循环特性,所谓循环特性是指:循环码中任一许用码组经过循环移位后,所得到的码组仍然是许用码组。

weixin_62920524的博客 967

MATLAB中的CRC编解码实现:原理与应用

虽然内置函数非常方便,但在某些特定情况下,我们可能需要根据特定的生成多项式或其他参数来自定义CRC编码过程。下面是一个自定义CRC-8编码函数的示例:% 初始化CRC结果为数据的异或% 数据位长if bitget(crc_result, 1) == 1 % 检查最高位% 左移一位后异或生成多项式else% 仅左移一位endendend在这个自定义函数中,poly是用于CRC计算的生成多项式,例如0x07(即111)是CRC-8常用的生成多项式。参数data是原始数据。

weixin_33670640的博客 1393

(4)MATLAB生成CRC校验码

承接前面几篇文章介绍的CRC校验码原理,本文给出CRC校验码的MATLAB仿真代码。暂无后加。后续介绍奇偶校验码和汉明码等。

weixin_xxxxx的博客 2094

基于MatlabCRC24A的实现

在实际的项目过程中用运到CRC校验,利用Matlab函数、脚本和对象分别实现了CRC24A校验,其中Matlab的脚本代码可以指导FPGA代码的实现。 1.什么是CRC 循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的...

flypassion的博客 4194
上一篇: 7,4汉明码及8,4扩展汉明码的实现
下一篇: LDPC 学习记录
ly0303521
博客等级 码龄17年 135粉丝 90原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值