
m
=
3
n
=
2^m-1
%定义码长
k
=
n-m
%信息位长
msg
=
randint(k*4,1,2)
%随机提取信号,引起一致地分布的任意整数矩阵
subplot(2,2,1)
stem(msg)
title('编码器输入信号')
p=cyclpoly(n,k)
%循环码生成多项式,n=7,k=4
code
=
encode(msg,n,k,'cyclic',p)
%编码函数,对信号进行差错编码
subplot(2,2,2)
stem(code)
title('编码器输出信号')
recode=decode(code,n,k,'cyclic',p)
%对信号进行译码,对接收到的码字进行译码,恢复
出原始的信息,译码参数和方式必须和编码时采用的严格相同
subplot(2,2,3)
stem(recode)
title('译码器输出信号')
t=-1:0.01:1
x=recode
%将recode赋值给x,并进行长度与fft设定
N=length(x)
fx=fft(x)
df=100/N
n=0:N/2
f=n*df
subplot(2,2,4)
plot(f,abs(fx(n+1))*2/N)
grid
title('频谱图')
2、误码率与信噪比之间的关系程序(以(3,2)循环码进行测试)
m
=
2
n
=
2^m-1
%定义码长
k
=
n-m
%信息位长
Fs=40
%系统采样频率
Fd=1
%码速率
N=Fs/Fd
M=2
%进制数
for
SNRpBit=1:100%信噪比
SNR=SNRpBit/log2(M)
%制造100个信息组,每组k位
msg
=
randint(100,k,[0,1])
code
=
encode(msg,n,k,'cyclic/binary')
%加入噪声
%在已调信号中加入高斯白噪声
noisycode=awgn(code,SNR-10*log10(0.5)-10*log10(N),'measured',[],'dB')
%将浮点数转化为二进制,波形整形过程
for
i=1:100
for
a=1:k+1
if
noisycode(i,a)<0.5
noisycode(i,a)
=
0
else
noisycode(i,a)
=
1
end
end
end
%译码
newmsg
=
decode(noisycode,n,k,'cyclic')
%计算误码率
[number,ratio]=biterr(newmsg,msg)
result(SNRpBit)=ratio
disp(['The
bit
error
rate
is',num2str(ratio)])
end
%不同信噪比下循环码经过加性高斯白噪声信道的误码率
figure(1)
stem(result)
title('循环码在不同信噪比下的误码率')
legend('误码率','*')
xlabel('信噪比')
ylabel('在加性高斯白噪声下的误码率')
1、首先以X5作为BCD码转换指令的执行条件,在左母线右侧输入LD X5。
2、然后在X5触点的右侧输如BCD码转换指令:BCD D6 K1Y0。其含义是将D6内的二进制数转换成BCD码存放在K1Y0中。
3、程序编写好之后按转换按钮将程序进行编译,然后按模拟测试按钮将程序写入模拟PLC。
4、出现模拟测试窗口后,点击菜单启动,然后选择继电器内存监视。
5、在监视窗口中的菜单中点击软元件,然后选择位软元件X和字软元件D。
6、点击X5执行BCD码转换指令,这时可以看到将D6中的二进制转换成了BCD码。
循环码指的是一类编码方式,它们的基本特性包括以下几个方面:
可纠错性:循环码可以通过数学运算来实现纠错,即可以在接收端通过纠正错误的比特位来还原传输过程中出现的错误信息。
周期性:循环码的编码过程中需要乘以一个固定的多项式,这个多项式被称为"生成多项式"。生成多项式具有一定的周期性,因此循环码也具有周期性特征,可以实现循环传输信息。
可编码性:循环码可以通过编码器将消息编码为循环码,适用于数字通信、磁记录、光存储等领域。
可译码性:循环码可以通过译码器将编码的信息还原成原始的消息,适用于数字通信等领域。
易于实现:循环码的译码过程简单明了,可以使用硬件电路或软件程序来实现。
总体来说,循环码具有纠错能力强、周期性、可编码性、可译码性和易于实现等优点。在实际应用中,循环码广泛用于数字通信、无线通信、磁盘存储、数字电视等领域。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)