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) );