《MATLAB(2-1-3)卷积与维特比解码代码》由会员分享,可在线阅读,更多相关《MATLAB(2-1-3)卷积与维特比解码代码(3页珍藏版)》请在金锄头文库上搜索。
1、卷积编码function output = convolutionX( X )%UNTITLED Summary of this function goes here% Detailed explanation goes heren=length(X);n1=0.01:0.01:n;for(i=1:n) is(i-1)*100+1:i*100)=X(i);endfiguresubplot(2,1,1)plot(n1,is);axis(0,n+1,-0.1,1.1);title(原始信号)grid Y=0 0 0;%output(1)=mod(sum(Y),2);%output(2)=mod(Y
2、(1)+Y(3),2);for(i=1:n) Y(1)=Y(2); Y(2)=Y(3); Y(3)=X(i); Y; output(2*(i-1)+1)=mod(sum(Y),2); output(2*(i-1)+2)=mod(Y(1)+Y(3),2);end%output(2*n+3)=X(n);%output(2*n+4)=X(n);%output(2*n+5)=0;%output(2*n+6)=0;output;a=length(output);a;t=0.01:0.01:a;for(i=1:a) st(i-1)*100+1):i*100)=output(i);endst; subplo
3、t(2,1,2)plot(t,st);axis(0,a+1,-0.1,1.1);title(卷积波形)gridEnd 汉明距的计算function x =distance(a,b)%UNTITLED Summary of this function goes here% Detailed explanation goes heren=length(a);x=0;for(i=1:n) if(a(i)=b(i) x=x+1; else x=x; endend end卷积编码(不显示波形)function x=encoding(X)%卷积编码% %UNTITLED2 Summary of this
4、function goes here% Detailed explanation goes heren=length(X);Y=0 0 0;for(i=1:n) Y(1)=Y(2); Y(2)=Y(3); Y(3)=X(i); Y; x(2*(i-1)+1)=mod(sum(Y),2); x(2*(i-1)+2)=mod(Y(1)+Y(3),2);endx;end解卷积(维特比解码)function Z = deconvolution(X) %UNTITLED Summary of this function goes here% Detailed explanation goes heren
5、=length(X);Z=zeros(1,n);a=n/2;M=zeros(2a,a);Y=zeros(2a,n);for(i=1:2a) M(i,:)=de2bi(i-1,a); Y(i,:)=encoding(M(i,:); m(i)=distance(Y(i,:),X);endb=min(m);b;for(i=1:2a) if(b=m(i) Z=de2bi(i-1,a); endend t=0.01:0.01:a; st=zeros(1,100*a); for(i=1:a) st(i-1)*100+1):i*100)=Z(i); end Z; figure %subplot(2,1,2)plot(t,st);axis(0,a+1,-0.1,1.1);title(解卷积波形)gridend