📄 gmskdemod6_j.m
字号:
function x=gmskdemod6_j(y,slen,kind)
T_space=32;
fs=64000*8;
fc=64000;
fb=16000;
sout=y;
sout2=sout(slen+1+1:end);
sout3=sout(1:length(sout2));
sout4=sout2.*sout3;
sout4=sout4(1:floor(length(sout4)/slen)*slen);
Hd = fir;
sout5=filter(Hd.Numerator,1,sout4);
sd=floor((length(Hd.Numerator))/2)+slen/2-1;
sout6=sout5(sd+1:end-slen+sd);
sout6=round(sout6./max(sout6)*255);
save GMSKsingal4.mat sout6 T_space fb fc fs;
%Gardener
%clear
load('GMSKsingaldongtai2.mat','sout6','T_space','fs','fc','fb');
%sout6:
%T_space:
%fs
if 0%
samp=fs/(fb*8);
sout6_2=sout6(1:samp:end);%
sout6_3=zeros(1,length(sout6_2)*8);
sout6_3(1:8:end)=sout6_2;%
%
Hd = fir_Gardener;
sout6_4=filter(Hd.Numerator,1,sout6_3);%
%
mytest(sout6);
mytest(sout6_2);
mytest(sout6_3);
mytest(sout6_4);
%
sout6=sout6_4;
sout6=round(sout6./max(sout6)*256);%
T_space=64;
end
step=floor(T_space/2);%
sp=0;%
lbcnt=3;%
tbuf=[255 255 255];isT=0;%
isTBcnt=0;%
space=randint(1,1,[1 17]);
sout6=sout6(space:end);
i=1;%i
%
cnt=0;outsp=0;outi=0;
%Gardener
while(1)
if i>=length(sout6)-T_space%
break;
end
cnt=cnt+1;outi(cnt)=i;%
a=sout6(i);b=sout6(i+T_space-1);c=sout6(i+step);%a:
if (a>0 && b<0) || (a<0 && b>0)%
if b-a>0
sp=-c;%
else
sp=c;%
end
%
if isT==2 %
if sp>0
lbcnt=lbcnt+1;
elseif sp<0
lbcnt=lbcnt-1;
end
if lbcnt==0 || lbcnt==6%lbcnt
sp2=floor(sp/256*step*0.5);
lbcnt=3;
else
sp2=0;
end
elseif isT==1%
sp2=floor(sp/256*step*0.2);
lbcnt=3;
else%
sp2=floor(sp/256*step/0.65);
lbcnt=3;
end
%
tbuf=[tbuf(2:3) abs(sp2)];
if min(tbuf)<20 && isT==0
isT=1;isTBcnt=cnt;
elseif min(tbuf)<10 && isT==1
isT=2;
end
i=i+T_space+sp2;%
outsp(cnt)=sp2;%
else
i=i+T_space;%
end
end
outi2=zeros(1,length(outi));
outi2(isTBcnt+1:end)=outi(isTBcnt+1:end);
cnt=outi(isTBcnt+1);
for i=isTBcnt:-1:1
cnt=cnt-T_space;
outi2(i)=cnt;
end
%
figure
%subplot(2,1,1);
stem (outsp); %
grid
%subplot(2,1,2);
%plot (sout6,'r');%
%hold on
%plot(outi+step,zeros(1,length(outi)),'o');%
%plot(outi2+step,10*ones(1,length(outi2)),'go');%
%hold off
%grid
sout7=reshape(sout6,slen,length(sout6)/slen);
%sel=1;
outsum=0;
switch kind
case 0%
for i=1:size(sout7,2)
outsum(i)=sum(sout7(:,i));
end
x=outsum<0;
x=double(x);
case 1%
for i=1:size(sout7,2)
outsum(i)=sum(sout7(:,i));
end
x=outsum/6800;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -