⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 find_sch.m

📁 小区初搜为GSM系统中的一个关键过程
💻 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 + -