資源簡介
循環碼編碼與解碼,并用MATLAB對其實現。

代碼片段和文件信息
clc
clear?all
n=input(‘請輸入循環碼的碼長?n=‘);?
k=input(‘請輸入循環碼的信息碼長?k=‘);?
gx=zeros(kn);G=zeros(kn);H=zeros(n-kn);?
g=input(‘請輸入生成多項式的系數ab…??次數由高到低如:[1?0?1]?\n‘);?
%產生生成矩陣gx?
for?m=1:k?
???gx(mm:n-k+m)=g;?
end?
%典型生成矩陣G和一致校驗矩陣H?
h=eye(k)/gx(:1:k);?
gx=h*gx;?
G=rem(abs(gx)2)?
H=cat(2(G(:k+1:end))‘eye(n-k))?
%解碼?
fid=fopen(‘decode.txt‘);?
data=fread(fid);?
data
fclose(fid);?
for?m=1:length(data)?
???if?data(m)==49?
???????data(m)=1;?
???elseif?data(m)==48?
???????data(m)=0;?
???else?disp(‘存在非法字符‘)?
???end?
end?
data=data‘;?
if?rem(length(data)n)?
???disp(‘序列不符合要求‘)?
end?
decode=zeros(1k*length(data)/n);?
pr=eye(nk);?
a=0;c=0;d=0;?
for?m=1:length(data)/n;?
???if?rem(data(1n*(m-1)+1:n*m)*H‘2)==zeros(1n-k)?
?????decode(1k*(m-1)+1:k*m)=data(1n*(m-1)+1:n*(m-1)+k);?
???else??
?????a=1;?
???end?
???if?a==1?
?????for?b=1:n
????????if?rem(data(1n*(m-1)+1:n*m)*H‘2)==H(:b)‘?
???????????decode(1k*(m-1)+1:k*m)=rem(data(1n*(m-1)+1:n*(m-1)+k)+pr(b:)2);?
???????????c=1;?
???????????break;?
????????end?
?????end?
???end?
???if?a==1&&c==0?
??????decode(1k*(m-1)+1:k*m)=2*eye(1k);?
???end?
end?
for?m=1:length(decode)?
???if?decode(m)==2?
??????disp(‘收到的該序列誤碼太多,無法糾錯‘)?
??????d=1;?
??????break;?
???end?
end?
if?d==0?
???decode?
end?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????398??2006-08-02?10:37??Unti
?????文件???????1406??2011-12-02?07:31??cyclic_decode.m
?????文件????????879??2011-12-04?09:29??cyclic_encode.m
-----------?---------??----------?-----??----
?????????????????2683????????????????????3
- 上一篇:運動前景提取的matlab程序
- 下一篇:matlab 改變圖片灰度級的函數
評論
共有 條評論