📄 reedmuller.m
字号:
%function [output,par]=reedmuller(input);
input=randint(1,4000);
G0=[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1];
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];
len=length(input);
n=len/8;
peak=zeros(1,n);
aver=zeros(1,n);
par=zeros(1,n);
output=zeros(1,len*2);
block=zeros(1,8);
tribit=zeros(1,3);
blockout=zeros(1,11);
for j=1:n
block=input(j*8-7:j*8);
tribit=block(6:8);
s=bi2de(tribit,'left-msb')+1;
blockout(1:5)=block(1:5);
blockout(6:11)=pe(s,:);
freq=mod(blockout*G,2);
freq=-freq*2+1;
stime=ifft(freq,16);
output(j*16-15:j*16)=stime;
peak(j)=max(stime.*conj(stime));
aver(j)=mean(stime.*conj(stime));
par(j)=10*log10(peak(j)/aver(j));
end
j=1:n;
plot(j,par(j));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -