📄 plotseisva.m
字号:
%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 + -