📄 find_sch.m
字号:
function find_sch
% filename='E:\data\20070817\20070817_13.dat';
% %filename='E:\data\data_2007816\data\22.dat';
% %filename='E:\data\data0814\data\12.dat';
% %filename='E:\data\20070824\22.dat';
% filename='E:\data\20070824\31.dat';
% C = textread(filename,'%s');
% [m,n]=size(C);
% n = (hex2dec(C)-512)/512;
% i = n(1:2:m,1);
% q = n(2:2:m);
filename1='D:\MATLAB6p1\work\searchSCH\i1026.txt';
filename2='D:\MATLAB6p1\work\searchSCH\q1026.txt';
% filename1='D:\MATLAB6p1\work\searchSCH\i_sch600.txt';
% filename2='D:\MATLAB6p1\work\searchSCH\q_sch600.txt';
i = textread(filename1,'%s');
q = textread(filename2,'%s');
i = hex2dec(i);
q = hex2dec(q);
% n = (hex2dec(C)-512)/512;
% ni1 = dec2bin(i,16);
% nq1 = dec2bin(q,16);
% % for kk =60000:-1:1
%
% % b(kk) = (1-2*bin2dec(n(kk,1)))*bin2dec(n(kk,2:12));
%
% % end
%
% bi = (2*bin2dec(i(:,1))-1).*bin2dec(i(:,2:12));
% bq = (2*bin2dec(q(:,1))-1).*bin2dec(q(:,2:12));
% r=q+j*i; % \data\22.dat',
% r=i+j*q; % for \data\20070817_13.dat
f=(q+j*i)./2048;
length_i=length(i);
length_q=length(q);
TRAINING = [1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1];
% TRAINING = [1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0,...
% 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1,...
% 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0,...
% 0, 1, 0, 1, 0, 1];
t_SEQ_gen=T_SEQ_gen(TRAINING);
r=f;
r=r(1:4:length(r)); %4抽1后的数据
% r=r(23952-16:4:23952+1250+16);
L_r=length(r); %4抽1后的数据长度
L_SCH_tx=length(t_SEQ_gen); %训练序列的长度
% L=L_SCH_tx;
% L_SCH_tx=length(t_SEQ_gen);
for ii=1:L_r-L_SCH_tx %做相关
SCH_and_r_corr(ii)=sum(conj(t_SEQ_gen)*r((ii-1)+1:(ii-1)+L_SCH_tx));
end
figure;
plot(abs(SCH_and_r_corr));
[m,n]=max(abs(SCH_and_r_corr));
%************************************对SCH解码*******************************
n=(n-39-3)*4-11;
% n=23952;n=23950;n=23949;n=23953;n=23951;
r_new=f(n:n+599);
r=r_new;
r=r.'; %未抽样位置准确的一个SB的数据
Lh=4;
T_SEQ=t_SEQ_gen;
OSR=4;
[Y, Rhh] = mafi_sch_new(r,Lh,T_SEQ,OSR); %匹配滤波
[ SYMBOLS , PREVIOUS , NEXT , START , STOPS ] = viterbi_init(Lh);%维特比检测
rx_burst = viterbi_detector(SYMBOLS,NEXT,PREVIOUS,START,STOPS,Y,Rhh);
%差分检测
% [samples1, demod1] = detect0_1(r,OSR);
% rx_burst = samples1;
rx_data_matrix2=DeMUX_SCH(rx_burst); %解复用,这个得自己改造一下
%下面要译码啦
rx_enc=rx_data_matrix2;
[rx_block,FLAG_SS,PARITY_CHK]=channel_dec_SCH(rx_enc);
%下面可以把解码得到的数据进行CRC校验,和解码得到的校验码比较
g = [1 0 1 0 1 1 1 0 1 0 1];
d = [rx_block 0 0 0 0 0 0 0 0 0 0];
[q,r] = deconv(d,g);
% ADJUST RESULT TO BINARY REPRESENTATION
L = length(r);
out = abs(r(L-9:L));
for n = 1:length(out),
if ceil(out(n)/2) ~= floor(out(n)/2)
out(n) = 1;
else
out(n) = 0;
end
end
out
%////////////////////////////另一种////////////////////////////////
r = f(1:4:length(f)).';
Tb = 3.692e-6;
M = 16;
[ peakIndex, qualityMetric, frequencyError ] = FB_detector_corrector(r, Tb, M);
n2 = peakIndex*4+5000-9;
% n=23952;n=23950;n=23949;n=23953;n=23951;
r_new=f(n2:n2+599);
r=r_new;
r=r.';
Lh=4;
T_SEQ=t_SEQ_gen;
OSR=4;
[Y, Rhh] = mafi_sch_new(r,Lh,T_SEQ,OSR); %匹配滤波
[ SYMBOLS , PREVIOUS , NEXT , START , STOPS ] = viterbi_init(Lh);%维特比检测
rx_burst = viterbi_detector(SYMBOLS,NEXT,PREVIOUS,START,STOPS,Y,Rhh);
rx_data_matrix2=DeMUX_SCH(rx_burst); %解复用,这个得自己改造一下
%下面要译码啦
rx_enc=rx_data_matrix2;
[rx_block2,FLAG_SS,PARITY_CHK2]=channel_dec_SCH(rx_enc);
%下面可以把解码得到的数据进行CRC校验,和解码得到的校验码比较
g = [1 0 1 0 1 1 1 0 1 0 1];
d = [rx_block 0 0 0 0 0 0 0 0 0 0];
[q,r] = deconv(d,g);
% ADJUST RESULT TO BINARY REPRESENTATION
L = length(r);
out = abs(r(L-9:L));
for n = 1:length(out),
if ceil(out(n)/2) ~= floor(out(n)/2)
out(n) = 1;
else
out(n) = 0;
end
end
out2=out
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -