www.gusucode.com > GPS仿真Matlab编程源码程序 > GPS仿真Matlab编程源码程序/chanssep.m

    % 用来分离并转换PCI9812多通道采集的数据,视情况将channel改为1,2,4,分别对应单通道、两通道、四通道情况
% 由filename来指定打开的文件,同时保存为同样文件名的mat文件
% 路径及文件名,相应的需要保存的变量均可在相应处修改
clc
clear

sum =20000000;                                           % 需要转换的采集点总数,可以设置成小于总数的值
% fs = 10*10^6;
% channel = 1;
% t0 = sum/(fs*channel);
filename = '9812_10.0M800.0M2C_2009.6.26_9.0';
fileopen = ['D:\sample\',filename,'.dat'];
fid=fopen( fileopen, 'r' );
if fid==-1
    disp(  'can''t open the file!please check' );
end
a1 = fread(fid, sum, 'int16');
fclose(fid);
a1 = a1./32768;                                         
a1 = a1';

% 定义一个FIR带通滤波器,进行带宽内的滤波
% b = fir1( 128, [0.18 0.38] );                          % 
% a1 = filter( b, 1, a1 );                                  

% % 进行降采样率
% c1 = a1( 1:channel:length(a1) );
% b = fir1( 128, [0.45 0.55] ); 
% % b = fir1( 128, [0.486 0.586] ); 
% c1 = filter( b, 1, c1 );                                % 这里假设信号带宽为100KHz,针对FM信号
% c1 = c1( 1:5:length(c1) );
% b1 = fir1( 128, [0.4 0.6] ); 
% % b1 = fir1( 128, [0.57 0.77] ); 
% c1 = filter( b1, 1, c1 );                                % 这里假设信号带宽为100KHz,针对FM信号
% c1dw = c1( 1:5:length(c1) );
% % c1dw = hbt(c1dw);
% 
% c2 = a1( 2:channel:length(a1) );
% c2 = filter( b, 1, c2 );                                % 这里假设信号带宽为100KHz,针对FM信号
% c2 = c2( 1:5:length(c2) );
% c2 = filter( b1, 1, c2 );                                % 这里假设信号带宽为100KHz,针对FM信号
% c2dw = c2( 1:5:length(c2) );
% % c2dw = hbt(c2dw);
% % c1dw = c1;
% % c2dw = c2;
% 
% 
% % clear  a1 c1 c2
% sum1 = length(c1dw);
% ffc1 = abs(fft(c1dw));
% ffc2 = abs(fft(c2dw));
% fs = 2*10^5*1;
% plot(0:sum1/2-1,20*log10(ffc1(1:sum1/2)/fs),'b',0:sum1/2-1,20*log10(ffc2(1:sum1/2)/fs),'r')
% % plot(0:sum1/2-1,20*log10(ffc2(1:sum1/2)/(2*10^5))) 
% % grid
% % plot(0:sum1-1,abs(hilbert(c1dw)),'b',0:sum1-1,abs(hilbert(c2dw))+0.05,'r')
% % plot(1:length(c1dw),real(c1dw),'b',1:length(c1dw),real(c2dw),'r')
% legend('channel 1','channel 2')
% grid
% % figure(2)
% % plot(abs(hilbert(c1dw)))
% % figure(3)
% % plot(abs(hilbert(c2dw)))
% % figure(2)
% % plot(1:sum1,abs(hilbert(c1dw)),'b',1:sum1,abs(hilbert(c2dw))+0.03,'r')
% 
% %%%%% 载频估计 %%%%%%%
% % fs = 2*10^5;
% % N = t0*fs;
% % [ i, fc4 ] =max( abs(fft(c1dw(1:fs), 4*fs)) );
% % fc4 = (fc4-1)/4;
% % options = optimset( @fminbnd );
% % options.TolX=10^-7;
% % global dex
% % global det
% % fcest1 = 0;
% % dex = c1dw( 1:fs );
% % det = 0:1/fs:1-1/fs;
% % fcest1 = fminbnd1( @defcfmin, fc4-1, fc4+1, options );
% % 
% % [ i, fc4 ] =max( abs(fft(c2dw(1:fs), 4*fs)) );
% % fc4 = (fc4-1)/4;
% % fcest2 = 0;
% % dex = c2dw( 1:fs );
% % fcest2 = fminbnd1( @defcfmin, fc4-1, fc4+1, options );
% % fcest1
% % fcest2
% % %%%%%%%%%%%%%%%%%%%%%%%%
% % % fs = 2*10^5;
% % t = 0:1/fs:t0-1/fs;
% % c1dwhbt = hilbert(c1dw);
% % c2dwhbt = hilbert(c2dw).*exp(j*2*pi*(fcest1-fcest2)*t);
% % dcorr = 400;
% % cor = xcorr( real(c1dwhbt(10^5+1:1.5*10^5)), real(c2dwhbt(10^5+1:1.5*10^5)), dcorr, 'coef');
% % [ i, m ] = max( abs(cor) );
% % m = m -(dcorr+1);
% % fmsg3 = sprintf('使用实部解调相关(18S数据)    %6.5f       %d', i, m);
% % disp( fmsg3 )
% dcorr = 400;
% cor = xcorr( real(c1dw(1*10^5+1:1.5*10^5)), real(c2dw(1*10^5+1:1.5*10^5)), dcorr, 'coef');
% % cor = xcorr( real(c1(5*10^5+1:0.75*10^6)), real(c2(5*10^5+1:0.75*10^6)), dcorr, 'coef');
% [ i, m ] = max( abs(cor) );
% m = m -(dcorr+1);
% fmsg3 = sprintf('使用实部解调相关(18S数据)    %6.5f       %d', i, m);
% disp( fmsg3 )
% 
% %%%% 相关系数的计算 %%%%%%
% % % load fmhbt
% % % fmhbt =fmhbt(2*10^5+1:3*10^5);
% % % t = 0:1/10^5:(length(fmhbt)-1)/10^5;
% % % fmhbt1 = fmhbt.*exp(-j*2*pi*0.1*t);
% % % dcorr = 20;
% % % cor = xcorr( real(fmhbt), real(fmhbt1), dcorr, 'coef');
% % % [ i, m ] = max( abs(cor) );
% % % m = m -(dcorr+1)
% % % fmsg3 = sprintf('使用实部解调相关(18S数据)    %6.5f       %d', i, m);
% % % disp( fmsg3 )
% % t = 0:1/1000:1-1/1000;
% % x = cos(2*pi*100*t);
% % y = (1+0.3*cos(2*pi*10*t)).*cos(2*pi*100*t);
% % cor = xcorr( x, y, 20, 'coef');
% % [ i, m ] = max( abs(cor) );