程序改为如下:
S=ones(7,3)%要加的部分A=[1 1 0 1 1 0 0]
[r,l]=size(A)
E=[0 0 0 0 0 0 00 0 0 0 0 0 10 0 0 0 0 1 00 0 0 0 1 0 00 0 0 1 0 0 00 0 1 0 0 0 00 1 0 0 0 0 01 0 0 0 0 0 0]%%%%%求校正子,然后将其转化成十进制数
for i=1:r
Sx=S(i,1)*4+S(i,2)*2+S(i,3)
end%%%%下面是(7,4)码检错
for i=1:r
switch(Sx)
case 0
disp('此接收码字没错')
case 1
case 2
disp('注意:此接收码字的第二位有错,请纠正')
case 4
disp('注意:此接收码字的第三位有错,请纠正')
case 3
disp('注意:此接收码字的第四位有错,请纠正')
case 5
disp('注意:此接收码字的第五位有错,请纠正')
case 6
disp('注意:此接收码字的第六位有错,请纠正')
case 7
disp('注意:此接收码字的第七位有错,请纠正')
end
end
%%%下面为在知道哪位出错的情况下,进行纠正
for i=1:r
switch(Sx)
case 0
信空搏 B(i,:)=A(i,:)+E(1,:)
case 1
B(i,:)=A(i,:)+E(2,:)
case 2
B(i,:)=A(i,:)+E(3,:)
case 4
B(i,:)=A(i,:)+E(4,:)
case 3
B(i,:)=A(i,:)+E(5,:)
case 5
B(i,:)=A(i,:)+E(6,:)
滑祥 case 6
B(i,:)=A(i,:)+E(7,:)
case 7
B(i,:)=A(i,:)+E(8,:)
end
end
B=rem(B,2)
disp('纠错后的码字')
disp(B)
结果:
注意:此接收码字的第七位有错,请纠正
纠错后的码字
0 1 0 1 1 0 0
clear all
close all
x=0:0.2:10
data1=sin(x)
plot(x,data1)
hold on
data2=awgn(data1,10*log10(0.05))
plot(x,data2,'r-')
hold off
扩展资料
matlab添加白噪声叠加到信亏册号:
function [Y,NOISE] = noisegen(X,SNR)
% noisegen add white Gaussian noise to a signal.
% [Y, NOISE] = NOISEGEN(X,SNR) adds white Gaussian NOISE to X. The SNR is in dB.
NOISE=randn(size(X))
NOISE=NOISE-mean(NOISE)
signal_power = 1/length(X)*sum(X.*X)
noise_variance = signal_power / ( 10^(SNR/10) )
NOISE=sqrt(noise_variance)/std(NOISE)*NOISE
Y=X+NOISE
其中X是肆空尺纯信号,SNR是要求的信噪比,Y是带噪信号,NOISE是叠加在信号裂高上的噪声。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)