%main program
clear all;
input=[1 1 0 0]
CRC_Number=[3 8 12 16];
for crc_index = 1:size(CRC_Number,2)
crc_no = CRC_Number(crc_index)
output = crc_add(input, crc_no)
[output_after_check, indicate] =crc_check(output,crc_no)
end
function [ output, indicate] = crc_check( input, crc_no )
% the function is proposed for deleting crc bits from the input sequence
n = size(input,2);
generator = zeros(1,crc_no+1);
output = zeros(1,n-crc_no);
switch crc_no
case 3
generator = [1 0 1 1];
case 8
generator = [1 1 0 0 1 1 0 1 1]; %D^8+D^7+D^4+D^3+D+1
case 12
generator = [1 1 0 0 0 0 0 0 0 1 1 1 1]; %D^12+D^11+D^3+D^2+D+1
case 16
generator = [1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1]; %D^16+D^12+D^5+1
case 24
generator = [1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1]; %D^24+D^23+d^6+D^5+D+1
otherwise
fprintf('\nPlease the number of crc bits should be 8 12 16 24\n');
end
output = input(1:n-crc_no);
for ii = 1:n-crc_no
if(input(1) == 1)
input(1:crc_no+1) = mod((input(1:crc_no+1)+generator),2);
end
input = [input(2:end) input(1)];
end
if sum(input) == 0
indicate = 0;
else
indicate = 1;
end
function [ output ] = crc_add( input, crc_no )
% the function is proposed for adding crc bits to the input sequence
k = size(input,2);
generator = zeros(1,crc_no+1);
output = zeros(1,k+crc_no);
switch crc_no
case 3
generator = [1 0 1 1];
case 8
generator = [1 1 0 0 1 1 0 1 1]; %D^8+D^7+D^4+D^3+D+1
case 12
generator = [1 1 0 0 0 0 0 0 0 1 1 1 1]; %D^12+D^11+D^3+D^2+D+1
case 16
generator = [1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1]; %D^16+D^12+D^5+1
case 24
generator = [1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1]; %D^24+D^23+d^6+D^5+D+1
otherwise
fprintf('\nPlease the number of crc bits should be 8 12 16 24\n');
end
output(1:k)=input;
for ii = 1:k
if(output(1) == 1)
output(1:crc_no+1) = mod((output(1:crc_no+1)+generator),2);
end
output = [output(2:end) output(1)];
end
output = [input output(1:crc_no)];
这是一个CRC校验码的matlab实现的程序 我运行不出来 不知道哪里有错误...
1 新建m文件,把函数function [ output, indicate] = crc_check( input, crc_no )贴进去保存;2 新建m文件,把函数function [ output ] = crc_add( input, crc_no )贴进去保存;3 在command window里输入 clear all;input=[1 1 0 0]CRC_Number=[3 8 12 16];for crc_index = 1:size...
matlab 中crc校验问题
首先,我们通过IIS(Internet信息服务)建立一个本地站点。如果还没有安装这个组件,需要在“控制面板→添加\/删除程序→添加\/删除Windows组件”中,点击组件,选择IIS,点“下一步”,插入安装光盘即可完成安装。接着,创建一个虚拟目录,地址对应于你的影音文件所在目录。以Windows 2000的IIS5.0为例,创建...
求一个用matlab生成的16位二进制信号的crc校验码的代码
function x=mycrc(data,divisor,type) if ((type==1)||(type==2)) n=length(divisor) appender=[0 0 0 0] dividend=[data] if ((type==1)) dividend=[data,appender] end dividendA=dividend(1:5) dividendB=dividend(6:length(dividend)) result=dividendA...
求用matlab生成16位信息位的crc校验码,尽量简单点,怕看不懂
data=randi(2,1,16)-1; %随机16位0,1数据g=[1 0 0 1 1];%生成多项式g(x)=x4+x+1,crc-4这个最简单会产生4位冗余码R=length(g)-1; %冗余码长为生成多项式长度减1[q,r] = deconv([data zeros(1,R)],g);%为数据右边补K个0,然后用deconv计算数据多项式除以生成多项式%商是q(...
这是什么意思?我安装MATLAB之后打不开
1,终止问题进程。2,安装更新补丁升级到最新版本或者重新安装应用软件。3,联系软件作者\/开发商。4,扫描病毒。5,重新安装操作系统。6,联系硬件厂商。这个问题通常是由于一个坏的安装或发行后引起另一个程序已安装,更换程序DLL,DLL不支持 1025 。关闭所有程序和TSR并再次尝试安装程序。详情请见http:\/...
循环冗余校验码(CRC)的技术原理
CRC即循环冗余校验码(Cyclic Redundancy Check),是数据通信领域中最常用的查错校验码。CRC校验码的原理在于,在数据序列之后附加一个检验码,通过数据序列与检验码之间的特定关系来检测数据传输的正确性。如果数据序列中的数据发生错误,这种关系会遭到破坏,从而实现对数据的差错检测。在CRC校验码中,信息...
crc16 多项式为8005 请问0x7f的CRC校验码是多少?
多项式为8005,右移,初值0000,出值0000,则0x7f的CRC校验码是000D。代码作为数据在向计算机或其它设备进行输入时,容易产生输入错误,为了减少输入错误,编码专家发明了各种校验检错方法,并依据这些方法设置了校验码。凡设有校验码的代码,是由本体码与校验码两部分组成(如组织机构代码),本体码是表示...