✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
利用matlab软件进行汉明码仿真,包含了编码、译码。同时译码分别采用了软判决+最小欧式距离译码、硬判决+最小汉明距离译码方法。
⛄ 部分代码
BitSeq=randi([0,1],[5120000,2]); %生成比特序列SymbolSeq=bi2de(BitSeq,'left-msb'); %比特序列转化为符号序列ModulatedSeq=qammod(SymbolSeq,4); %调制后的信号序列%QPSK实际误码率:error=zeros([1,11]);for ebno=0:1:10 AWGNChannel = comm.AWGNChannel('NoiseMethod','Signal to noise ratio (Eb/No)','EbNo',ebno,'BitsPerSymbol',2,'SignalPower',mean(abs(ModulatedSeq).^2)); outsignal=AWGNChannel(ModulatedSeq); recv=qamdemod(outsignal,4); rec=de2bi(recv,'left-msb'); [~,error(ebno+1)]=biterr(rec,BitSeq);endsemilogy(0:1:10,error,'o-');grid on axis([0,10,1e-5,1])hold onxlabel('Eb/No');ylabel('BER');title('AWGN');%%BitSeq=randi([0,1],[512000,4]); %生成比特序列BitSeq_1 = reshape(BitSeq',[2048000,1]);BitSeq_Encode = encode(BitSeq_1,7,4,'hamming/binary');ModulatedSeq=qammod(BitSeq_Encode,4,'InputType','bit'); %调制后的信号序列error=zeros([1,11]);for ebno=0:1:10 AWGNChannel = comm.AWGNChannel('NoiseMethod','Signal to noise ratio (Eb/No)','EbNo',ebno,'BitsPerSymbol',2,'SignalPower',mean(abs(ModulatedSeq).^2)*7/4); outsignal=AWGNChannel(ModulatedSeq); recv = qamdemod(outsignal,4,'OutputType','bit'); rec = decode(recv,7,4,'hamming/binary'); [~,error(ebno+1)]=biterr(rec,BitSeq_1);endsemilogy(0:1:10,error,'o-');legend('Uncoded','Soft decision','Hard decision')%%function [res] = SoftD(Seq)% 软判决函数% INPUT:接收到的编码后的符号% OUTPUT:软判决后的比特序列 global ModulatedY; global base; dist = sum(dis_complex(ModulatedY,Seq),2); [~,index] = min(dist); res = base(index,:);endfunction [res] = dis_complex(a,b)% 复数欧式距离函数 res = sqrt((imag(a)-imag(b)).^2+(real(a)-real(b)).^2);end
⛄ 运行结果
⛄ 参考文献
[1] 于洪涛.基于均值匹配的Turbo码联合译码的Matlab实现[D].哈尔滨工业大学[2023-07-22].DOI:CNKI:CDMD:2.2009.229135.
[2] 曹亚陆.基于Matlab的卷积码译码器的设计与仿真[J].硅谷, 2011(15):1.DOI:10.3969/j.issn.1671-7597.2011.15.030.
[3] 段晓霞.基于MATLAB编码的PCM编译码实现[J].廊坊师范学院学报:自然科学版, 2019, 19(4):5.DOI:CNKI:SUN:HZJS.0.2019-04-009.