📄 segymat.m
字号:
if ((Style==3)|(Style==5))
wiggle(data.SegyTrace,data.SegyTime,data.SegyData,'VA',gain);
end
hold off
set(gca,'YaxisLocation','Right');
set(gca,'XtickLabel',[]);
ylabel('TWT [ms]')
%% RESET ZOOM SUCH THAT THIS STATE IS THE 'ZOOM OUT' STATE.
zoom reset;
%%%zoom on;
% --------------------------------------------------------------------
function UpdateTopPlot(hObject, eventdata, handles)
SegymatVerbose(['GUI : Update TOP Plots'],60)
data=guidata(hObject);
axes(handles.axMain);axMain=axis;
pop=get(handles.popTop,'String');
ipop=get(handles.popTop,'value');
hname=pop{ipop};
axes(handles.axTop)
if isfield(data,'dTopPlot')
if ipop~=data.dTopPlot_ipop
data.dTopPlot=bar([data.SegyTraceHeaders.(hname)]);
data.dTopPlot_ipop=ipop;
guidata(hObject,data)
end
else
data.dTopPlot=bar([data.SegyTraceHeaders.(hname)]);
data.dTopPlot_ipop=ipop;
guidata(hObject,data)
end
ax=axis;axis([axMain(1) axMain(2) ax(3) ax(4)])
set(gca,'XaxisLocation','Top');
set(gca,'YaxisLocation','Right');
xlabel(hname)
axes(handles.axMain);%%%zoom on;
function UpdateBotPlot(hObject, eventdata, handles)
SegymatVerbose(['GUI : Update BOT Plots'],60)
data=guidata(hObject);
axes(handles.axMain);axMain=axis;
pop=get(handles.popBot,'String');
ipop=get(handles.popBot,'value');
hname=pop{ipop};
axes(handles.axBot)
if isfield(data,'dBotPlot')
if ipop~=data.dBotPlot_ipop
data.dBotPlot=plot([data.SegyTraceHeaders.(hname)]);
data.dBotPlot_ipop=ipop;
guidata(hObject,data)
end
else
data.dBotPlot=plot([data.SegyTraceHeaders.(hname)]);
data.dBotPlot_ipop=ipop;
guidata(hObject,data)
end
% bar([data.SegyTraceHeaders.(hname)]);
ax=axis;axis([axMain(1) axMain(2) ax(3) ax(4)])
set(gca,'XaxisLocation','Bot');
set(gca,'YaxisLocation','Right');
xlabel(hname)
axes(handles.axMain);%%%zoom on;
% --------------------------------------------------------------------
function UpdateGain(hObject, eventdata, handles)
SegymatVerbose(['GUI : UpdateGain'],20)
data=guidata(hObject);
set(handles.eGainMin,'String',data.PlotPref.caxis(1));
set(handles.eGainMax,'String',data.PlotPref.caxis(2));
axes(handles.axMain);
caxis(data.PlotPref.caxis);
drawnow;
% --------------------------------------------------------------------
function KeyPressFcn_Callback(hObject, eventdata, handles)
data=guidata(hObject);
Key=get(gcf,'CurrentCharacter');
%SegymatVerbose(['GUI : KeyPressFcn : ',num2str(double(Key)),' ',char(Key)],20)
%disp(char(Key));
%disp(double(Key));
%%%%%%%%%%%
% GAIN
%if (Key=='+'),
if ((double(Key)==30)|(double(Key)==43)|(double(Key)==115))
data.PlotPref.caxis=data.PlotPref.caxis./(1.2);
guidata(hObject,data);
UpdateGain(hObject, eventdata, handles) ;
end
%if (Key=='-');
if ((double(Key)==31)|(double(Key)==45)|(double(Key)==120))
data.PlotPref.caxis=data.PlotPref.caxis.*(1.2);
guidata(hObject,data);
UpdateGain(hObject, eventdata, handles) ;
end
%% SHOW PREFS
if (lower(Key)=='h')
if isfield(data.PlotPref,'Show')==0, data.PlotPref.Show=1;end
data.PlotPref.Show=1-data.PlotPref.Show;
guidata(hObject,data);
fMain_ResizeFcn(hObject,[],handles);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% ZOOM ON MAIN AX
if isfield(data,'zoomfac')==0
data.zoomfac=1.5;
guidata(hObject,data);
end
zoom_in_keys=[29,97]; % ARROW RIGHT OR 'a'
zoom_out_keys=[28,122]; % ARROW LEFT OR 'z'
if isempty(Key)==1
Key=0;
end
try
if find(double(Key)==zoom_in_keys);
zoom(data.zoomfac)
UpdateTopPlot(hObject, eventdata, handles)
UpdateBotPlot(hObject, eventdata, handles)
end
catch
SegymatVerbose(sprintf('%s : failed to zoom',mfilename))
%keyboard;
end
if find(double(Key)==zoom_out_keys);
zoom(-data.zoomfac)
UpdateTopPlot(hObject, eventdata, handles)
UpdateBotPlot(hObject, eventdata, handles)
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% MOVE
if isfield(data,'movefac')==0
% Movefac=1; move in stepos of size of window
% Movefac=0.5; move in steps of half-size of window
data.movefac=.02;
guidata(hObject,data);
end
if (double(Key)>=49)&(double(Key)<=117), % NUM PAD
go_left_keys=[52,117]; % 2,j
go_right_keys=[54,111]; % 2,j
go_down_keys=[50,107]; % 2,j
go_up_keys=[56]; % 2,j
xlim=get(handles.axMain,'Xlim');
ylim=get(handles.axMain,'Ylim');
wx=(xlim(2)-xlim(1)).*data.movefac;
wy=(ylim(2)-ylim(1)).*data.movefac;
if (find(go_up_keys==double(Key))), set(handles.axMain,'Ylim',ylim-wy); end % 8
if (find(go_down_keys==double(Key))), set(handles.axMain,'Ylim',ylim+wy); end % 2
if (find(go_left_keys==double(Key))), set(handles.axMain,'Xlim',xlim-wx); end % 4
if (find(go_right_keys==double(Key))), set(handles.axMain,'Xlim',xlim+wx); end % 6
if (double(Key)==49), % 1
set(handles.axMain,'Ylim',ylim+wy);
set(handles.axMain,'Xlim',xlim-wx);
end % 1
if (double(Key)==51), % 3
set(handles.axMain,'Ylim',ylim+wy);
set(handles.axMain,'Xlim',xlim+wx);
end % 3
if (double(Key)==55), % 7
set(handles.axMain,'Ylim',ylim-wy);
set(handles.axMain,'Xlim',xlim-wx);
end % 7
if (double(Key)==57), % 9
set(handles.axMain,'Ylim',ylim-wy);
set(handles.axMain,'Xlim',xlim+wx);
end % 9
if (double(Key)==53), % 5
axes(handles.axMain)
zoom out;
end % 5
xlim_after=get(handles.axMain,'Xlim');
if (sum(xlim==xlim_after)<2)
UpdateTopPlot(hObject, eventdata, handles)
UpdateBotPlot(hObject, eventdata, handles)
end
end
%
% IO FUNCTIONS
%
% --------------------------------------------------------------------
function mFileOpen_Callback(hObject, eventdata, handles)
% hObject handle to mFileOpen (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
try
data=guidata(hObject);
if isfield(data,'SegyFile');
segyfile=DIAOpenSEGY(data.SegyFile);
else
segyfile=DIAOpenSEGY;
end
fReadSegy_Callback(hObject, eventdata, handles,segyfile);
catch
end
% --------------------------------------------------------------------
function mOpenFileFast_Callback(hObject, eventdata, handles)
% hObject handle to mOpenFileFast (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
try
[segyfile.filename,segyfile.pathname]=uigetfile( ...
{'*.segy;*.SEGY;*.SEGY;*.sgy','All Segy files'; ...
'*.su;*.SU;*.sU;*.Su','All SU files'; ...
'*','All Files'},...
'Pick A SEGY file');
fReadSegy_Callback(hObject, eventdata, handles,segyfile);
catch
end
% --------------------------------------------------------------------
function fReadSegy_Callback(hObject, eventdata, handles,segyfile);
data=guidata(hObject);
try
[dpath,dfile,dsuffix]=fileparts(segyfile.filename);
if (strcmp(lower(dsuffix),'.su'))
[data.SegyData,data.SegyTraceHeaders,data.SegyHeader]=ReadSu(fullfile(segyfile.pathname,segyfile.filename));
else
if isfield(segyfile,'JUMP');
k=0;
try
if segyfile.JUMP.enable==1
k=k+1;v{k}='jump';
k=k+1;v{k}=segyfile.JUMP.jump;
end
if segyfile.TIMERANGE.enable==1
k=k+1;v{k}='trange';
k=k+1;v{k}=segyfile.TIMERANGE.min;
k=k+1;v{k}=segyfile.TIMERANGE.max;
end
if segyfile.TRACEHEADER.enable==1
k=k+1;v{k}='minmax';
k=k+1;v{k}=segyfile.TRACEHEADER.name;
k=k+1;v{k}=segyfile.TRACEHEADER.min;
k=k+1;v{k}=segyfile.TRACEHEADER.max;
end
catch
SegymatVerbose(sprintf('%s : failed to make use of headers for reading',mfilename))
%keyboard
end
if k>0
[data.SegyData,data.SegyTraceHeaders,data.SegyHeader]=ReadSegy(fullfile(segyfile.pathname,segyfile.filename),v);
else
[data.SegyData,data.SegyTraceHeaders,data.SegyHeader]=ReadSegy(fullfile(segyfile.pathname,segyfile.filename));
end
else
[data.SegyData,data.SegyTraceHeaders,data.SegyHeader]=ReadSegy(fullfile(segyfile.pathname,segyfile.filename));
end
end
if isempty(data.SegyData)
f = warndlg('No data was read !', 'ReadSegy warning', 'modal');
else
set(handles.fMain,'name',['SegyMAT : ',segyfile.filename])
data.SegyFile=segyfile;
data.SegyTime=[1:1:data.SegyHeader.ns].*data.SegyHeader.dt/1e+6;
data.SegyTrace=[1:length(data.SegyTraceHeaders)];
data.PlotPref.Show=1;
data.PlotPref.caxis=[min(data.SegyData(:)) max(data.SegyData(:))];
guidata(hObject,data);
fMain_ResizeFcn(hObject, eventdata, handles);
UpdatePrefs(hObject, eventdata, handles);
UpdatePlots(hObject, eventdata, handles);
end
catch
errordlg('An error occured while reading the SEGY file','Error reading SGY file','modal')
%keyboard
end
UpdateMenus(hObject, eventdata, handles);
% --------------------------------------------------------------------
function mFileSave_Callback(hObject, eventdata, handles)
% hObject handle to mFileSave (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
try
data=guidata(hObject);
file=fullfile(data.SegyFile.pathname,data.SegyFile.filename);
ButtonName=questdlg(['Are you sure you want to override :',file], ...
'Warning !!!', ...
'Yes','No','No');
if strcmp(ButtonName,'Yes')
[dpath,dfile,dsuffix]=fileparts(file);
if (strcmp(lower(dsuffix),'.su'))
WriteSuStructure(file,data.SegyHeader,data.SegyTraceHeaders,data.SegyData);
else
WriteSegyStructure(file,data.SegyHeader,data.SegyTraceHeaders,data.SegyData);
end
end
catch
errordlg('An error occured while writing SEGY file','Error writing SGY file','modal')
end
% --------------------------------------------------------------------
function mFileSaveAs_Callback(hObject, eventdata, handles)
% hObject handle to mFileSaveAs (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
try
data=guidata(hObject);
[segyfile.filename,segyfile.pathname]=uiputfile( ...
{'*.segy;*.SEGY;*.SEGY;*.sgy','All Segy files'; ...
'*.su;*.SU;*.sU;*.Su','All SU files'; ...
'*','All Files'},...
'Save as ');
file=fullfile(segyfile.pathname,segyfile.filename);
[dpath,dfile,dsuffix]=fileparts(file);
if (strcmp(lower(dsuffix),'.su'))
WriteSuStructure(file,data.SegyHeader,data.SegyTraceHeaders,data.SegyData);
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -