%伪随机交织器/解交织器的演示%作者:Mathuranathanhttps://www.gaussianwaves.com%许可证-Creative Commons-cc-by-nc-sa 3.0clc;清晰;%____________________________________________%输入参数%____________________________________________D=15;%交错深度。D值越大,随机性越大n=5;%要发送的数据块数。data='THE_QUICK_BROWN_FOX_JUMPS_OVER_THE_LAZY_DOG_';%用作数据的常量模式%____________________________________________%使数据长度为D的倍数。这是为了%仅演示。否则,必须将空白填充为零。数据=repmat(数据,1,n);%发送n个指定数据模式的块如果mod(长度(数据),D)~=0数据=[数据数据(1:(D*(fix(length(data)/D+1)))-长度(data,data))];结束%我们正在发送D个类似数据块%intlvrInput=报告(数据(1:n),[1D]);%fprintf('将数据输入到交织器->\n');%disp(char(intlvrInput));%显示(“_____________________________________________________________________________”);%INTERLEAVER公司%逐行写入交织器permuterIndex=randperm(D);内部输出=[];指数=1;i=1时:固定(长度(数据)/D)intrlvrOutput=[intrlvr输出数据(permuterIndex+(i-1)*D)];结束i=1:mod(长度(数据),D)intrlvrOutput=[intrlvr输出数据(permuterIndex(i)+修复(长度(数据)/D)*D)];结束uncorrustedIntrlvrOutput=内部输出;%插入10'*'会损坏交织器输出intrlvrOutput(1,25:34)=零(1,10)+42;%去INTERLEAVERdeintrlvrOutput=[];对于i=1:fix(长度(intrlvrOutput)/D)deintrlvrOutput(permuterIndex+(i-1)*D)=内部输出((i-1”*D+1:i*D);结束i=1:mod(长度(intrlvrOutput),D)deintrlvrOutput((fix(length(intrlvrOutput)/D))*permuterIndex+i)=intrlvr输出((i+1):(i+1,*D);结束deintrlvrOutput=char(deintrlverOutput);disp(“给定数据-->”);disp(数据);显示(“”)disp(“Permuter索引-->”)disp(permuterIndex);显示(“”)disp(“伪随机交织器输出-->”);disp(uncorrutedIntrlvrOutput);显示(“”)disp('Interleaver Output been corrupt by 10 symbols of burst error-marked by''*''->');disp(char(intrlvrOutput));显示(“”)disp(“伪随机解交织器输出-->”);disp(deintrlvrOutput);