📄 goley.m
字号:
%****************格雷编码法********************
%**********************************************
%-----------------------------------------------------------------------
%copyright Ray 2007
clc;
clear all;
input=randint(1,13000);
G0=[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]; %G为Goley生成矩阵
G1=[0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1;
0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1;
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1;
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1];
G2=[0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1;
0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1;
0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1;
0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1;
0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1;
0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1];
pe=[1 0 0 1 0 1;
1 0 0 0 1 1;
0 1 0 0 1 1;
0 1 0 1 1 0;
0 0 1 1 1 0;
0 0 1 1 0 1;
1 1 0 0 0 1;
1 0 1 0 0 1];
G=[G0;G1;G2];
n=1000; %进行1000次的仿真
len=length(input);
n=len/13;
peak_power=zeros(1,n);
mean_power=zeros(1,n);
par=zeros(1,n);
block=zeros(1,8); %每一个block的长度
tribit=zeros(1,3);
blockout=zeros(1,11);
for j=1:n
block=input(j*13-12:j*13); %1次取13个符号
tribit=block(11:13); %将13个符号的末尾3位提取出来
s=bi2de(tribit,'left-msb')+1; %将提取出来的三位数字转换成10进制
for k=1:5 %将陪集中的前十位每两位组成4进制数
bi=block(2*k-1:2*k);
de(k)=bi2de(bi,'left-msb');
end
blockout(1:5)=de(1:5);
blockout(6:11)=pe(s,:); %将陪集与前五位的值组合成新的block
freq=mod(blockout*G,2);
for m=1:length(freq)
if freq(m)==0
freq2(m)=1;
elseif freq(m)==1
freq2(m)=-1 ;
end
end
freq3=[freq2(1:8),zeros(1,240),freq2(9:16)];
stime=ifft(freq3,256);
Signal_Power=abs(stime.^2);
peak_power(j)=max(Signal_Power);
mean_power(j)=mean(Signal_Power);
par(j)=10*log10(peak_power(j)/mean_power(j));
end
j=1:n;
plot(j,par(j));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -