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

📄 rdi2cdf.m

📁 一个研究声多普勒计程仪很好的工具箱
💻 M
📖 第 1 页 / 共 3 页
字号:
      %eval(['cdf{''',varname,'''}.epic_code = nclong(1279+i);'])	end	mexcdf('ATTPUT',cdf,varname,'_FillValue','FLOAT',1,1e35);   %eval(['cdf{''',varname,'''}.FillValue = ncfloat(1e35);'])   mexcdf('ATTPUT',cdf,varname,'valid_range','FLOAT',2,[-32768 32767]);   %eval(['cdf{''',varname,'''}.valid_range = ncfloat([-32768 32767]);'])end%for i=1:nbeams,	varname = [VARNAMES(CORRELATION,:),int2str(i)];	mexcdf('VARDEF',cdf,varname,'FLOAT',2,[0 1]);   %eval(['cdf{''',varname,'''} = ncfloat(''ensemble'',''bin'');'])	mexcdf('ATTPUT',cdf,varname,'units','CHAR',6,'counts');   %eval(['cdf{''',varname,'''}.units = ''counts'';'])	buf=sprintf('Beam %1i correlation',i);	mexcdf('ATTPUT',cdf,varname,'long_name','CHAR',length(buf),buf);	%eval(['cdf{''',varname,'''}.long_name = buf;'])	mexcdf('ATTPUT',cdf,varname,'epic_code','LONG',1,1293+i);   %eval(['cdf{''',varname,'''}.epic_code = nclong(1293+i);'])	mexcdf('ATTPUT',cdf,varname,'_FillValue','FLOAT',1,1e35);   %eval(['cdf{''',varname,'''}.FillValue = ncfloat(1e35);'])	mexcdf('ATTPUT',cdf,varname,'valid_range','FLOAT',2,[0 255]);   %eval(['cdf{''',varname,'''}.valid_range = ncfloat([0 255]);'])end	%for i=1:nbeams,	varname = [VARNAMES(INTENSITY,:),int2str(i)];	mexcdf('VARDEF',cdf,varname,'FLOAT',2,[0 1]);   %eval(['cdf{''',varname,'''} = ncfloat(''ensemble'',''bin'');'])	mexcdf('ATTPUT',cdf,varname,'units','CHAR',6,'counts');   %eval(['cdf{''',varname,'''}.units = ''counts'';'])	buf=sprintf('Echo Intensity (AGC) Beam %1i',i);	mexcdf('ATTPUT',cdf,varname,'long_name','CHAR',length(buf),buf);	%eval(['cdf{''',varname,'''}.long_name = buf;'])	mexcdf('ATTPUT',cdf,varname,'epic_code','LONG',1,1220+i);   %eval(['cdf{''',varname,'''}.epic_code = nclong(1220+i);'])   mexcdf('ATTPUT',cdf,varname,'_FillValue','FLOAT',1,1e35);   %eval(['cdf{''',varname,'''}.FillValue = ncfloat(1e35);'])	mexcdf('ATTPUT',cdf,varname,'valid_range','FLOAT',2,[0 255]);   %eval(['cdf{''',varname,'''}.valid_range = ncfloat([0 255]);'])	mexcdf('ATTPUT',cdf,varname,'norm_factor','FLOAT',1,0.45);   %eval(['cdf{''',varname,'''}.norm_factor = ncfloat(0.45);'])	mcnote(cdf,varname,'normalization to db',notenum);		notenum=notenum+1;end	%for i=1:nbeams,	varname = [VARNAMES(GOOD,:),int2str(i)];	mexcdf('VARDEF',cdf,varname,'FLOAT',2,[0 1]);   %eval(['cdf{''',varname,'''} = ncfloat(''ensemble'',''bin'');'])	mexcdf('ATTPUT',cdf,varname,'units','CHAR',6,'counts');   %eval(['cdf{''',varname,'''}.units = ''counts'';'])	buf=sprintf('Percent Good Beam %1i',i);	mexcdf('ATTPUT',cdf,varname,'long_name','CHAR',length(buf),buf);	%eval(['cdf{''',varname,'''}.long_name = buf;'])	mexcdf('ATTPUT',cdf,varname,'epic_code','LONG',1,1240+i);   %eval(['cdf{''',varname,'''}.epic_code = nclong(1220+i);'])	mexcdf('ATTPUT',cdf,varname,'_FillValue','FLOAT',1,1e35);   %eval(['cdf{''',varname,'''}.FillValue = ncfloat(1e35);'])	mexcdf('ATTPUT',cdf,varname,'valid_range','FLOAT',2,[0 100]);   %eval(['cdf{''',varname,'''}.valid_range = ncfloat([0 255]);'])end	%mexcdf('VARDEF',cdf,'Hdg','FLOAT',1,0);%cdf{'Hdg'} = ncfloat('ensemble');mexcdf('ATTPUT',cdf,'Hdg','units','CHAR',7,'degrees');%cdf{'Hdg'}.units = 'degrees';mexcdf('ATTPUT',cdf,'Hdg','long_name','CHAR',12,'INST Heading');%cdf{'Hdg'}.long_name = 'INST Heading';mexcdf('ATTPUT',cdf,'Hdg','epic_code','LONG',1,1215);%cdf{'Hdg'}.epic_code = nclong(1215);mexcdf('ATTPUT',cdf,'Hdg','_FillValue','FLOAT',1,1e35);%cdf{'Hdg'}.FillValue = ncfloat(1e35);mexcdf('ATTPUT',cdf,'Hdg','valid_range','FLOAT',2,[0 359.99]);%cdf{'Hdg'}.valid_range = ncfloat([0 359.99]);mexcdf('ATTPUT',cdf,'Hdg','heading_alignment','DOUBLE',1,hdg_alignment);%cdf.heading_alignment = nclong(data(fld));if ~isequal(hdg_bias,0)   mexcdf('ATTPUT',cdf,'Hdg','heading_bias','DOUBLE',1,hdg_bias);   c_hdg = hdg_bias;   mcnote(cdf,'Hdg','heading bias recorded and applied internally correcting magnetic declination',notenum);	notenum=notenum+1;elseif isequal(hdg_bias,0) & ~isempty(magnetic)   mexcdf('ATTPUT',cdf,'Hdg','heading_bias','DOUBLE',1,magnetic);   c_hdg = magnetic;   if isequal(transform,0) %0 for beam   	mcnote(cdf,'Hdg','heading bias input by user and applied post-recovery for magnetic declination',notenum);	elseif isequal(transform, 3) %3 for earth      mcnote(cdf,'Hdg','heading bias input by user but not applied',notenum);   end   notenum=notenum+1;elseif isequal(hdg_bias,0) & isempty(magnetic)   mexcdf('ATTPUT',cdf,'Hdg','heading_bias','DOUBLE',1,hdg_bias);   c_hdg = hdg_bias;   mcnote(cdf,'Hdg','No correction has been made for magnetic declination',notenum);	notenum=notenum+1;end   %cdf.heading_bias = nclong(data(fld));mcnote(cdf,'Hdg','units for heading bias and alignment are degrees',notenum);notenum=notenum+1;%mexcdf('VARDEF',cdf,'Ptch','FLOAT',1,0);%cdf{'Ptch'} = ncfloat('ensemble');mexcdf('ATTPUT',cdf,'Ptch','units','CHAR',7,'degrees');%cdf{'Ptch'}.units = 'degrees';mexcdf('ATTPUT',cdf,'Ptch','long_name','CHAR',10,'INST Pitch');%cdf{'Ptch'}.long_name = 'INST Pitch';mexcdf('ATTPUT',cdf,'Ptch','epic_code','LONG',1,1216);%cdf{'Ptch'}.epic_code = nclong(1216);mexcdf('ATTPUT',cdf,'Ptch','_FillValue','FLOAT',1,1e35);%cdf{'Ptch'}.FillValue = ncfloat(1e35);mexcdf('ATTPUT',cdf,'Ptch','valid_range','FLOAT',2,[-20 20]);%cdf{'Ptch'}.valid_range = ncfloat([-20 20]);%mexcdf('VARDEF',cdf,'Roll','FLOAT',1,0);%cdf{'Roll'} = ncfloat('ensemble');mexcdf('ATTPUT',cdf,'Roll','units','CHAR',7,'degrees');%cdf{'Roll'}.units = 'degrees';mexcdf('ATTPUT',cdf,'Roll','long_name','CHAR',9,'INST Roll');%cdf{'Roll'}.long_name = 'INST Roll';mexcdf('ATTPUT',cdf,'Roll','epic_code','LONG',1,1217);%cdf{'Roll'}.epic_code = nclong(1217);mexcdf('ATTPUT',cdf,'Roll','_FillValue','FLOAT',1,1e35);%cdf{'Roll'}.FillValue = ncfloat(1e35);mexcdf('ATTPUT',cdf,'Roll','valid_range','FLOAT',2,[-20 20]);%cdf{'Roll'}.valid_range = ncfloat([-20 20]);%mexcdf('VARDEF',cdf,'Tx','FLOAT',1,0);%cdf{'Tx'} = ncfloat('ensemble');mexcdf('ATTPUT',cdf,'Tx','units','CHAR',7,'degrees');%cdf{'Tx'}.units = 'degrees';mexcdf('ATTPUT',cdf,'Tx','long_name','CHAR',27,'ADCP Transducer Temperature');%cdf{'Tx'}.long_name = 'ADCP Transducer Temperature';mexcdf('ATTPUT',cdf,'Tx','epic_code','LONG',1,3017);%cdf{'Tx'}.epic_code = nclong(3017);mexcdf('ATTPUT',cdf,'Tx','_FillValue','FLOAT',1,1e35);%cdf{'Tx'}.FillValue = ncfloat(1e35);mexcdf('ATTPUT',cdf,'Tx','valid_range','FLOAT',2,[-5 40]);%cdf{'Tx'}.valid_range = ncfloat([-5 40]);%mexcdf('VARDEF',cdf,'xmitc','FLOAT',1,0);%cdf{'xmitc'} = ncfloat('ensemble');mexcdf('ATTPUT',cdf,'xmitc','units','CHAR',4,'amps');%cdf{'xmitc'}.units = 'amps';mexcdf('ATTPUT',cdf,'xmitc','long_name','CHAR',16,'transmit current');%cdf{'xmitc'}.long_name = 'transmit current';mexcdf('ATTPUT',cdf,'xmitc','_FillValue','FLOAT',1,1e35);%cdf{'xmitc'}.FillValue = ncfloat(1e35);%mexcdf('VARDEF',cdf,'xmitv','FLOAT',1,0);mexcdf('ATTPUT',cdf,'xmitv','units','CHAR',5,'volts');mexcdf('ATTPUT',cdf,'xmitv','long_name','CHAR',16,'transmit voltage');mexcdf('ATTPUT',cdf,'xmitv','_FillValue','FLOAT',1,1e35);%cdf{'xmitv'} = ncfloat('ensemble');%cdf{'xmitv'}.units = 'volts';%cdf{'xmitv'}.long_name = 'transmit voltage';%cdf{'xmitv'}.FillValue = ncfloat(1e35);%mexcdf('VARDEF',cdf,'dac','LONG',1,0);mexcdf('ATTPUT',cdf,'dac','units','CHAR',6,'counts');mexcdf('ATTPUT',cdf,'dac','long_name','CHAR',10,'DAC output');mexcdf('ATTPUT',cdf,'dac','_FillValue','LONG',1,1e35);%cdf{'dac'} = nclong('ensemble');%cdf{'dac'}.units = 'counts';%cdf{'dac'}.long_name = 'DAC output';%cdf{'dac'}.FillValue = nclong(1e35);%mexcdf('VARDEF',cdf,'VDD3','LONG',1,0);mexcdf('ATTPUT',cdf,'VDD3','units','CHAR',5,'volts');mexcdf('ATTPUT',cdf,'VDD3','long_name','CHAR',17,'battery voltage 3');mexcdf('ATTPUT',cdf,'VDD3','_FillValue','LONG',1,1e35);%cdf{'VDD3'} = nclong('ensemble');%cdf{'VDD3'}.units = 'volts';%cdf{'VDD3'}.long_name = 'battery voltage 3';%cdf{'VDD3'}.FillValue = nclong(1e35);%mexcdf('VARDEF',cdf,'VDD1','LONG',1,0);mexcdf('ATTPUT',cdf,'VDD1','units','CHAR',5,'volts');mexcdf('ATTPUT',cdf,'VDD1','long_name','CHAR',17,'battery voltage 1');mexcdf('ATTPUT',cdf,'VDD1','_FillValue','LONG',1,1e35);%cdf{'VDD1'} = nclong('ensemble');%cdf{'VDD1'}.units = 'volts';%cdf{'VDD1'}.long_name = 'battery voltage 1';%cdf{'VDD1'}.FillValue = nclong(1e35);%mexcdf('VARDEF',cdf,'VDC','LONG',1,0);mexcdf('ATTPUT',cdf,'VDC','units','CHAR',5,'volts');mexcdf('ATTPUT',cdf,'VDC','long_name','CHAR',3,'VDC');mexcdf('ATTPUT',cdf,'VDC','_FillValue','LONG',1,1e35);%cdf{'VDC'} = nclong('ensemble');%cdf{'VDC'}.units = 'volts';%cdf{'VDC'}.long_name = 'VDC';%cdf{'VDC'}.FillValue = nclong(1e35);%%Added 27-Feb-03mexcdf('VARDEF',cdf,'Pressure','FLOAT',1,0);mexcdf('ATTPUT',cdf,'Pressure','units','CHAR',7,'pascals');mexcdf('ATTPUT',cdf,'Pressure','long_name','CHAR',24,'ADCP Transducer Pressure');mexcdf('ATTPUT',cdf,'Pressure','epic_code','LONG',1,4);mexcdf('ATTPUT',cdf,'Pressure','_FillValue','FLOAT',1,1e35);mexcdf('ATTPUT',cdf,'Pressure','valid_range','FLOAT',2,[0 4294967295]);%cdf{'Pressure'} = ncfloat('ensemble');%cdf{'Pressure'}.units = 'pascals';%cdf{'Pressure'}.long_name = 'ADCP Transducer Pressure';%cdf{'Pressure'}.epic_code = nclong(4);%cdf{'Pressure'}.FillValue = ncfloat(1e35);%cdf{'Pressure'}.valid_range = ncfloat([0 4294967295]);mexcdf('ENDEF',cdf);  %line 848, no varputs before endef!!fclose(fid);	% close file to force a rewind%% ------- load up the data ------%fid = fopen(infile,'r');% load in the depths for each bin%status = mexcdf('VARPUT', cdfid, varid, start, count, value, autoscale)status=mexcdf('VARPUT',cdf,'D',0,nbins,depths);%cdf{'D'}(:) = depths;% mark for desired data and designate containersflags = zeros(1,39);   %%changed 27-Feb-03flags(2)=1;	% flag for ensemble numberflags(3:9)=ones(1,7); % flag for timeflags(12)=1; % speed of soundflags(14)=1; % headingflags(15)=1; % pitchflags(16)=1; % rollflags(18)=1; % temperatureflags(25)=1; % xmit currentflags(26)=1; % xmit voltageflags(27)=1; % DACflags(29)=1; % VDD3flags(30)=1; % VDD1flags(31)=1; % VDCflags(38)=1; %pressure  %added 27-Feb-03i=0;readidx=1;% define some more thingstime_greg=zeros(nens,6);if exist('minens')~=1,   minens = 1;elseif minens < 1,   minens = 1;endif exist('maxens')~=1,   maxens = nens;elseif maxens > nens,   maxens = nens;endwhile 1,	ens_start = ftell(fid);	if ens_start < 0, break; endif (readidx >= minens) & (readidx <= maxens),	% skip to the location of variable leader	if fseek(fid, offsets(2), 'cof') < 0, break; end	junk = rdvlead(fid, 0, flags);	if ~isempty(junk),		% sort and store		ensnum = junk(1);      mexcdf('VARPUT',cdf,'Rec',i,1,junk(1));      %cdf{'Rec'}(i) = junk(1);      % fix the year, should work for the next 90 years...      if junk(2) > 90,          junk(2)=junk(2)+1900;      else         junk(2)=junk(2)+2000;      end      time_greg(i+1,:) = [junk(2:6) junk(7)+junk(8)/100];
      time_jul=julian([junk(2:6) junk(7)+junk(8)/100]);      mexcdf('VARPUT',cdf,'TIM',i,1,time_jul);      %cdf{'TIM'}(i) = time_jul;      mexcdf('VARPUT',cdf,'sv',i,1,junk(9));      %cdf{'sv'}(i) = junk(9);            %correct heading for magnetic declination      heading = junk(10)./100 + c_hdg;      mexcdf('VARPUT',cdf,'Hdg',i,1,heading);      %cdf{'Hdg'}(i) = heading;		mexcdf('VARPUT',cdf,'Ptch',i,1,junk(11)./100);      %cdf{'Ptch'}(i) = junk(11)./100;      mexcdf('VARPUT',cdf,'Roll',i,1,junk(12)./100);      %cdf{'Roll'}(i) = junk(12)./100;		mexcdf('VARPUT',cdf,'Tx',i,1,junk(13)./100);      %cdf{'Tx'}(i) = junk(13)./100;		mexcdf('VARPUT',cdf,'xmitc',i,1,junk(14).*0.019);      %cdf{'xmitc'}(i) = junk(14).*0.019;		mexcdf('VARPUT',cdf,'xmitv',i,1,junk(15).*0.556);      %cdf{'xmitv'}(i) = junk(15).*0.556;		mexcdf('VARPUT',cdf,'dac',i,1,junk(16));      %cdf{'dac'}(i) = junk(16);		mexcdf('VARPUT',cdf,'VDD3',i,1,junk(17).*0.097);      %cdf{'VDD3'}(i) = junk(15).*0.097;		mexcdf('VARPUT',cdf,'VDD1',i,1,junk(18).*0.032);      %cdf{'VDD1'}(i) = junk(18).*0.032;		mexcdf('VARPUT',cdf,'VDC',i,1,junk(19).*0.307);      %cdf{'VDC'}(i) = junk(19).*0.307;      press = junk(20)*10;      mexcdf('VARPUT',cdf,'Pressure',i,1,press);  %%added 27-Feb-03      %cdf{'Pressure'}(i)=junk(20).*10;	end		% get the main data (vel, corr, etc)	junk=zeros(nbins,nbeams);	fill=ones(1,nbeams).*(1e35);	for type=3:6,		pos=ftell(fid);		% skip to the location of the next data type, 		if fseek(fid, ens_start+offsets(type)-pos, 'cof') < 0, 			break; 		end		if fread(fid,1,'int16') ~= rec_ids(type),			disp([longnames(type,:),' data ID not found'])		else			% read 'em			for j=1:nbins,				[dummy, n] = fread(fid,nbeams,read_types(type,:));				if n == nbeams, 					junk(j,:) = dummy'; 				else					junk(j,:) = fill;				end			end			% last minute massage			if type == VELOCITY,				% change the fill flag to be consistent				dummy = find(junk == -32768);				junk(dummy) = ones(size(dummy)).*(1e35);			end			% write 'em			for j=1:nbeams,				varname = [VARNAMES(type,:),int2str(j)];            mexcdf('VARPUT',cdf,varname,[i 0],[1 nbins],junk(:,j)');            %cdf{varname}(i,:) = junk(:,j);			end		end	end	i=i+1;end	readidx=readidx+1;	% jump to next ensemble	pos=ftell(fid);	nskip=nbytes-(pos-ens_start)+2;	% add 2 for checksum	if fseek(fid,nskip,'cof') < 0; break; end   if readidx<1000 & ~rem(readidx,100),       disp(sprintf('%d ensembles read, %d converted in %d sec',readidx-1,i,toc)),    end	if readidx>1000 & ~rem(readidx,1000), disp(sprintf('%d ensembles read, %d converted in %d sec',readidx-1,i,toc)), end		if readidx>maxens break; endendfclose(fid);mexcdf('CLOSE',cdf);%cdf=close(cdf);disp('Conversion complete')disp(sprintf('%d seconds elapsed while processing',toc))disp(sprintf('%d was the number of the last ensemble read',ensnum))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -