📄 segymat.m
字号:
axes(handles.axMain);%%%zoom on;% --------------------------------------------------------------------function UpdateMainPlot(hObject, eventdata, handles) SegymatVerbose(['GUI : Update Main Plot'],20) data=guidata(hObject); Style=get(handles.popStyle,'Value'); % GET PLOTTING STYLE axes(handles.axMain); if ((Style==1)|(Style==4)|(Style==5)) imagesc(data.SegyTrace,data.SegyTime,data.SegyData); caxis(data.PlotPref.caxis) hold on end gain=max(abs(data.PlotPref.caxis)); if ((Style==2)|(Style==4)) wiggle(data.SegyTrace,data.SegyTime,data.SegyData,'wiggle',gain); end 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 PREFSif (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 AXif 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 find(double(Key)==zoom_in_keys); zoom(data.zoomfac) UpdateTopPlot(hObject, eventdata, handles) UpdateBotPlot(hObject, eventdata, handles)endif find(double(Key)==zoom_out_keys); zoom(-data.zoomfac) UpdateTopPlot(hObject, eventdata, handles) UpdateBotPlot(hObject, eventdata, handles)end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% MOVEif 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) endend %% 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 segyfile=DIAOpenSEGY; fReadSegy_Callback(hObject, eventdata, handles,segyfile);catchend% --------------------------------------------------------------------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);catchend% --------------------------------------------------------------------function fReadSegy_Callback(hObject, eventdata, handles,segyfile);data=guidata(hObject);try% keyboard [dpath,dfile,dsuffix]=fileparts(segyfile.filename); if (strcmp(lower(dsuffix),'.su')) [data.SegyData,data.SegyTraceHeaders,data.SegyHeader]=ReadSu(fullfile(segyfile.pathname,segyfile.filename)); else [data.SegyData,data.SegyTraceHeaders,data.SegyHeader]=ReadSegy(fullfile(segyfile.pathname,segyfile.filename)); end 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);catch errordlg('An error occured while reading the SEGY file','Error reading SGY file','modal')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 endcatch 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 WriteSegyStructure(file,data.SegyHeader,data.SegyTraceHeaders,data.SegyData); endcatch errordlg('An error occured while writing SEGY file','Error writing SGY file','modal')end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -