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

📄 plotseisva.m

📁 绘制地震图形matlab软件包,可采用不同方式进行剖面成图实现
💻 M
📖 第 1 页 / 共 2 页
字号:
 %x=x+wd+sep;
 x=x+sep;
 wd=.1;
 hmaster=uicontrol('style','popupmenu','string','Ind.|Master|Slave',...
 	'units','normalized','position',[x,0,wd,ht],'tooltipstring','Define amplitude control',...
 	'callback','plotimage(''rescale'')','value',ampflag);
 x=x+wd+sep;
 wd=.16;
 hscale=uicontrol('style','popupmenu','string',str2mat('Mean scaling',...
 	'Max scaling'),'units','normalized','position',[x,0,wd,ht],'tooltipstring','Define data scaling mechanism',...
 	'callback','plotimage(''rescale'')','value',scaleopt);
 vis='on'; if(scaleopt==2) vis='off'; end
 x=x+wd+sep;
 wd=.15;
 nclips=length(clips);
 clipmsg=num2strmat(clips);
 clipmsg=[ones(nclips,1)*'Cliplevel: ' num2strmat(clips)];  
 hclip=uicontrol('style','popupmenu','string',clipmsg,...
 	'units','normalized','position',[x,0,wd,ht],'tooltipstring','Set clip level in std deviations',...
 	'callback','plotimage(''rescale'')','value',iclip,...
 	'visible',vis);

	set(gcf,'userdata',[hflip,hbrighten,hdarken,hmsg,hi,hscale,hclip,hcmap,...
			hzoompick hmaster hlabel hslider])
	
	set(hscale,'userdata',[scaleopt mxs2 mns smean2 stddev2]);
	set(hmaster,'userdata',[mxs smean stddev]);
	set(hclip,'userdata',iclip);
	set(hmsg,'userdata',clips)

 %colorview(gca,hi,mns,mxs,0)

if(~nobrighten) brighten(.5); end

global NAME_
global NOSIG
if(isempty(NOSIG))nosig=0;else nosig=NOSIG; end
if(~nosig)
	signature(NAME_);
end

 return;
end

if(strcmp(action,'zoom'))
 box=selboxfini;

 h=get(gcf,'userdata');
 hi=h(5);
 if(length(box)==5)
		delete(box(5));
 end
 if(isempty(box)) return; end

	xmin=min([box(1) box(3)]);
	xmax=max([box(1) box(3)]);
	ymin=min([box(2) box(4)]);
	ymax=max([box(2) box(4)]);
	%get the current axis settings
	xlim=get(gca,'xlim');
	ylim=get(gca,'ylim');
	test1=xmin-xlim(1)+xmax-xlim(2)+ymin-ylim(1)+ymax-ylim(2);
	test2=(xmin-xmax)*(ymin-ymax);
	if(abs(test1)<10*eps | abs(test2)< 10*eps)
		x=get(hi,'xdata');
		y=get(hi,'ydata');
		set(gca,'xlim',[min(x) max(x)],'ylim',[min(y) max(y)]);
	else
		set(gca,'xlim',[xmin xmax],'ylim',[ymin ymax]);
	end
	return;
end

if(strcmp(action,'flip'))
 h=get(gcf,'userdata');
 hflip=h(1);
 hmsg=h(4);
 pol=get(hflip,'userdata');
 pol=-1*pol;
	clr=get(gcf,'colormap');
	colormap(flipud(clr));
	set(hflip,'userdata',pol);
	if(pol==1)
		set(hmsg,'string','Polarity Normal');
	elseif(pol==-1)
		set(hmsg,'string','Polarity Reversed');
	end
	return;
end;

if(strcmp(action,'zoompick'))
 h=get(gcf,'userdata');
 hzoompick=h(9);
 value=get(hzoompick,'value');
 switch value
 case 1 
	selboxinit('plotimage(''zoom'')',1);
	set(gcf,'name','Seismic Image Plot, Simplezooming installed (Use MB1)');
 case 2
	drawlineinit('plotimage(''pick'')',1);
	set(gcf,'name','Seismic Image Plot, Picking resummed (Use MB1)');
 case 3
	drawlineinit('plotimage(''pick'')',1);
	set(gcf,'name','Seismic Image Plot, Picking new (Use MB1)');
	PICKS=[];
   hp=get(hzoompick,'userdata');
   hkids=get(gca,'children');
   for k=1:length(hp)
		ind=find(hp(k)==hkids);
		if(~isempty(ind))
			delete(hp(k));
		end
	end
	set(hzoompick,'userdata',[]);
 end
 return;
end;

if(strcmp(action,'pick'))
 pick=drawlinefini;
 h=get(gcf,'userdata');
 hzoompick=h(9);

 if(length(pick)==5)
		if(pick(5)>0)
      	delete(pick(5));
		end
		test=pick(1)-pick(3)+pick(4)-pick(2);%zero for a double click
		if(test)
			hpick=line([pick(1) pick(3)],[pick(2) pick(4)],[1 1],'linewidth',2,...
				'color',PICKCOLOR);
			PICKS = [PICKS; pick(1) pick(2); pick(3) pick(4)];
      	hp=get(hzoompick,'userdata');
      	set(hzoompick,'userdata',[hp hpick]);
		else
			if(~isempty(PICKS))
				%make sure click was in axes
				xlim=get(gca,'xlim');
				ylim=get(gca,'ylim');
				if(between(xlim(1),xlim(2),pick(1)) & between(ylim(1),ylim(2),pick(2)) )
					PICKS(end-1:end,:)=[];
					hp=get(hzoompick,'userdata');
					if(~isempty(hp))
						delete(hp(end));
						hp(end)=[];
						set(hzoompick,'userdata',hp);
					end
				end
			end
		end
 end

 return;
end

if(strcmp(action,'colormap'))
	h=get(gcf,'userdata');
	hmsg=h(4);
	hi=h(5);
	hscale=h(6);
	hclip=h(7);
	
	%get the data
	seis=get(hi,'cdata');
	
	%determine old scaling
	dat=get(hscale,'userdata');
	oldscaleopt=dat(1);
	mxs=dat(2); mns=dat(3); smean=dat(4); stddev=dat(5);
	
	colorview(gca,hi,mns,mxs,0)
	
	return
end

if(strcmp(action,'brighten'))
   h=get(gcf,'userdata');
   hlabel=h(11);
   hslider=h(12);
   currlvl=get(hlabel,'userdata');
   newlvl=get(hslider,'value');
   if(currlvl>newlvl)
      nsteps=currlvl-newlvl;
      for k=1:nsteps
        brighten(-.25);
      end
   elseif(currlvl<newlvl)
      nsteps=newlvl-currlvl;
      for k=1:nsteps
        brighten(.25);
      end
   end
   set(hlabel,'string',['Bright ' int2str(newlvl)])
   set(hlabel,'userdata',newlvl);
   return;
end

if(strcmp(action,'rescale'))
	h=get(gcf,'userdata');
	hmsg=h(4);
	hi=h(5);
	hscale=h(6);
	hclip=h(7);
	hmaster=h(10);
	
	ampflag=get(hmaster,'value');
	stuff=get(hmaster,'userdata');
	mxs=stuff(1);
	smean=stuff(2);
	stddev=stuff(3);
	
	%get the data
	seis=get(hi,'cdata');
	
	%determine old scaling
	dat=get(hscale,'userdata');
	oldscaleopt=dat(1);
	mxsold=dat(2); mnsold=dat(3); smeanold=dat(4); stddevold=dat(5);
	%new opt
	newscaleopt=get(hscale,'value');
	dat(1)=newscaleopt;
	
	
	%get clip value
	inewclip=get(hclip,'value');
	ioldclip=get(hclip,'userdata');
	set(hclip,'userdata',inewclip);
	clips=get(hmsg,'userdata');
	clipold=clips(ioldclip);
	clipnew=clips(inewclip);
	
	%get number of columns in colormap
	clrmap=get(gcf,'colormap');
	nkols=size(clrmap,1);
	
	flag=computer;
	flag='shit';
	
	if(ampflag==1)
	   stddev2=stddev;
	   mxs2=mxs;
	   smean2=smean;
	elseif(ampflag==2)
	   global SMEAN STDDEV MXS
	   stddev2=stddev;
	   mxs2=mxs;
	   smean2=smean;
	   SMEAN=smean;
	   STDDEV=stddev;
	   MXS=mxs;
	else
	   global SMEAN STDDEV MXS
	   stddev2=STDDEV;
	   mxs2=MXS;
	   smean2=SMEAN;
	end
	
	% 		%undo the old scaling
	if( oldscaleopt == 1 ) %undo mean scaling
		mxsprime = min([smeanold+clipold*stddevold,mxsold]);
		mns=-mxsprime;
		smat = (seis-1)*(mxsprime-mns)/(nkols-1) + mns;
	elseif( oldscaleopt == 2) %undo max scaling
		mns=-mxsold;
		smat = (seis-1)*(mxsold-mns)/(nkols-1) + mns;
	end
	
	%apply new scaling
	if(newscaleopt==1)
		mxsprime = min([smean2+clipnew*stddev2,mxs2]);
		mns=-mxsprime;
		disp(['mean scaling ']);
		seis = (smat -mns)/(mxsprime-mns)*(nkols-1)+1;
		set(hclip,'visible','on');
	elseif(newscaleopt==2)
		disp(['max scaling ']);
		mns=-mxs2;
		seis = (smat -mns)/(mxs2-mns)*(nkols-1)+1;
		set(hclip,'visible','off');
	end
	
	dat(1)=newscaleopt;
	dat(2)=mxs2;
	dat(3)=mns;
	dat(4)=smean2;
	dat(5)=stddev2;
	set(hscale,'userdata',dat);
	
% 	if(strcmp(flag,'MAC2'))
% 		ntr=size(seis,2);
% 		for k=1:ntr
% 			%undo the old scaling
% 			if( oldscaleopt == 1 ) %undo mean scaling
% 				if(k==1) mxsprime = min([smean+clipold*stddev,mxs]);
% 					mns=-mxsprime;
% 				end
% 				tmp = (seis(:,k)-1)*(mxsprime-mns)/(nkols-1) + mns;
% 			elseif( oldscaleopt == 2) %undo max scaling
% 				if(k==1)	mns=-mxs; end
% 				tmp = (seis(:,k)-1)*(mxs-mns)/(nkols-1) + mns;
% 			end
% 			
% 			%apply new scaling
% 			if(newscaleopt==1)
% 				if(k==1) disp(['mean scaling ']);
% 					mxsprime = min([smean+clipnew*stddev,mxs]);
% 					mns=-mxsprime;
% 					set(hclip,'visible','on');
% 				end
% 				seis(:,k) = (tmp -mns)/(mxsprime-mns)*(nkols-1)+1;
% 			elseif(newscaleopt==2)
% 				if(k==1) disp(['max scaling ']);
% 					mns=-mxs;
% 					set(hclip,'visible','off');
% 				end
% 				seis(:,k) = (tmp -mns)/(mxs-mns)*(nkols-1)+1;
% 				
% 			end
% 		end
% 	else
% 		%undo the old scaling
% 		if( oldscaleopt == 1 ) %undo mean scaling
% 			mxsprime = min([smean+clipold*stddev,mxs]);
% 			mns=-mxsprime;
% 			smat = (seis-1)*(mxsprime-mns)/(nkols-1) + mns;
% 		elseif( oldscaleopt == 2) %undo max scaling
% 			mns=-mxs;
% 			smat = (seis-1)*(mxs-mns)/(nkols-1) + mns;
% 		end
% 		
% 		%apply new scaling
% 		if(newscaleopt==1)
% 			mxsprime = min([smean+clipnew*stddev,mxs]);
% 			mns=-mxsprime;
% 			disp(['mean scaling ']);
% 			seis = (smat -mns)/(mxsprime-mns)*(nkols-1)+1;
% 			set(hclip,'visible','on');
% 		elseif(newscaleopt==2)
% 			disp(['max scaling ']);
% 			mns=-mxs;
% 			seis = (smat -mns)/(mxs-mns)*(nkols-1)+1;
% 			set(hclip,'visible','off');
% 		end
% 	end

	
	set(hi,'cdata',seis);
	return;
end

⌨️ 快捷键说明

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