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

📄 guisegymat.m

📁 matlab源程序
💻 M
📖 第 1 页 / 共 2 页
字号:
function varargout = GUISegyMAT(varargin)% GUISegyMAT : GUI to read Segyfiles.%% (C) 2002, Thomas Mejer Hansen%%  OBSOLETE%%%    FIG = GUISEGYMAT launch GUISegyMAT GUI.%    GUISEGYMAT('callback_name', ...) invoke the named callback.% Last Modified by GUIDE v2.0 05-Jun-2002 09:19:09if nargin == 0  % LAUNCH GUI	fig = openfig(mfilename,'reuse');	% Use system color scheme for figure:	set(fig,'Color',get(0,'defaultUicontrolBackgroundColor'));	% Generate a structure of handles to pass to callbacks, and store it. 	handles = guihandles(fig);	guidata(fig, handles);    data=guidata(fig);        filename = ['.',mfilename,'.mat'];    if exist(filename)==2,        load(filename);        if exist('Position'), set(handles.figsegy,'Position',Position);end        if exist('SETTINGS'), data.SETTINGS=SETTINGS; end    else        data.SETTINGS.cmin=[];        data.SETTINGS.cmax=[];        data.SETTINGS.gain=1;        data.SETTINGS.PlotType=1;            % [1] Image            % [2] Wiggle            % [3] Image+Wiggle        data.SETTINGS.tmin=[];        data.SETTINGS.tmax=[];            end    guidata(fig,data);        % Position axes    axes(handles.axMain)    set(handles.axMain,'XTickLabel','')    axMainPOS=get(handles.axMain,'Position');    axes(handles.axTop)    set(handles.axTop,'XAxisLocation','top')    set(handles.axTop,'YAxisLocation','Right')    axTopPOS=get(handles.axTop,'Position');    axTopPOS(2)=axMainPOS(2)+axMainPOS(4);    axTopPOS(1)=axMainPOS(1);    axTopPOS(3)=axMainPOS(3);    set(handles.axTop,'Position',axTopPOS);    axes(handles.axBot)    set(handles.axBot,'YAxisLocation','Right')    set(handles.axBot,'XAxisLocation','Bottom')    axBotPOS=get(handles.axBot,'Position');    axBotPOS(2)=axMainPOS(2)-axBotPOS(4);    axBotPOS(1)=axMainPOS(1);    axBotPOS(3)=axMainPOS(3);    set(handles.axBot,'Position',axBotPOS);            %% MAKE COLORMAPS MENU    uimenu(handles.mColormaps,'label','gray','CallBack','GUISegyMAT(''actionSetColorMap'',gcbo,guidata(gcbo),''gray'')');    uimenu(handles.mColormaps,'label','jet','CallBack','GUISegyMAT(''actionSetColorMap'',gcbo,guidata(gcbo),''jet'')');    uimenu(handles.mColormaps,'label','hsv','CallBack','GUISegyMAT(''actionSetColorMap'',gcbo,guidata(gcbo),''hsv'')');    uimenu(handles.mColormaps,'label','cool','CallBack','GUISegyMAT(''actionSetColorMap'',gcbo,guidata(gcbo),''cool'')');    uimenu(handles.mColormaps,'label','copper','CallBack','GUISegyMAT(''actionSetColorMap'',gcbo,guidata(gcbo),''copper'')');            %% MAKE TOOLS MENU    menuAmp=uimenu(handles.mTools, 'label','Amplitude');      %uimenu(menuAmp,'Label','AGC','CallBack','GUISegyMAT(''actionToolAmplitude'',gcbo,guidata(gcbo),''AGC'')');    menuSort=uimenu(handles.mTools, 'label','Sort');      %uimenu(menuAmp,'Label','CDP','CallBack','GUISegyMAT(''actionToolSort'',gcbo,guidata(gcbo),''CDP'')');      %uimenu(menuAmp,'Label','Offset','CallBack','GUISegyMAT(''actionToolSort'',gcbo,guidata(gcbo),''OFFSET'')');        set(handles.figsegy,'Visible','on')    	% Wait for callbacks to run and window to be dismissed:	uiwait(fig);	if nargout > 0		varargout{1} = fig;	end    closereq    elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK	try		if (nargout)			[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard		else			feval(varargin{:}); % FEVAL switchyard		end	catch		disp(lasterr);	endend%| ABOUT CALLBACKS:%| GUIDE automatically appends subfunction prototypes to this file, and %| sets objects' callback properties to call them through the FEVAL %| switchyard above. This comment describes that mechanism.%|%| Each callback subfunction declaration has the following form:%| <SUBFUNCTION_NAME>(H, EVENTDATA, HANDLES, VARARGIN)%|%| The subfunction name is composed using the object's Tag and the %| callback type separated by '_', e.g. 'slider2_Callback',%| 'figure1_CloseRequestFcn', 'axis1_ButtondownFcn'.%|%| H is the callback object's handle (obtained using GCBO).%|%| EVENTDATA is empty, but reserved for future use.%|%| HANDLES is a structure containing handles of components in GUI using%| tags as fieldnames, e.g. handles.figure1, handles.slider2. This%| structure is created at GUI startup using GUIHANDLES and stored in%| the figure's application data using GUIDATA. A copy of the structure%| is passed to each callback.  You can store additional information in%| this structure at GUI startup, and you can change the structure%| during callbacks.  Call guidata(h, handles) after changing your%| copy to replace the stored original so that subsequent callbacks see%| the updates. Type "help guihandles" and "help guidata" for more%| information.%|%| VARARGIN contains any extra arguments you have passed to the%| callback. Specify the extra arguments by editing the callback%| property in the inspector. By default, GUIDE sets the property to:%| <MFILENAME>('<SUBFUNCTION_NAME>', gcbo, [], guidata(gcbo))%| Add any extra arguments after the last argument, before the final%| closing parenthesis.%%% START ACTIONLIST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function actionReadSegy(h,handles)data=guidata(h);if isfield(data,'SEGYFILE'),   data.SEGYFILE=DIAOpenSEGY(data.SEGYFILE);else       data.SEGYFILE=DIAOpenSEGY;end% ADD OPTIONS TO READ IN PART OF SEGY DATA IF NEEDEDi=0;if data.SEGYFILE.JUMP.enable==1,    i=i+1;segyoptions{i}='jump';    i=i+1;segyoptions{i}=data.SEGYFILE.JUMP.jump;endif data.SEGYFILE.TIMERANGE.enable==1,    i=i+1;segyoptions{i}='trange';    i=i+1;segyoptions{i}=data.SEGYFILE.TIMERANGE.min;    i=i+1;segyoptions{i}=data.SEGYFILE.TIMERANGE.max;endif data.SEGYFILE.TRACEHEADER.enable==1,    i=i+1;segyoptions{i}='minmax';    i=i+1;segyoptions{i}=data.SEGYFILE.TRACEHEADER.name;    i=i+1;segyoptions{i}=data.SEGYFILE.TRACEHEADER.min;    i=i+1;segyoptions{i}=data.SEGYFILE.TRACEHEADER.max;endif isfield(data.SEGYFILE,'SegyHeader')    i=i+1;segyoptions{i}='SegyHeader';    i=i+1;segyoptions{i}=data.SEGYFILE.SegyHeader;endif ~isfield(data.SEGYFILE,'filename'); return; endfilename=[data.SEGYFILE.pathname,data.SEGYFILE.filename];% get fileextension[p,n,ext]=fileparts(filename);if exist('segyoptions')==1  if strcmp(lower(ext),'.su'),    [data.Data,data.SegyTraceHeaders,data.SegyHeader,data.HeaderInfo]=ReadSu(filename,segyoptions);  else    [data.Data,data.SegyTraceHeaders,data.SegyHeader,data.HeaderInfo]=ReadSegy(filename,segyoptions);  endelse  if strcmp(lower(ext),'.su'),    [data.Data,data.SegyTraceHeaders,data.SegyHeader,data.HeaderInfo]=ReadSu(filename);  else    [data.Data,data.SegyTraceHeaders,data.SegyHeader,data.HeaderInfo]=ReadSegy(filename);  endend% RESET PLOTTING PARAMETERS  data.SETTINGS.cmin=min(data.Data(:));  data.SETTINGS.cmax=max(data.Data(:));  data.SETTINGS.gain=1;guidata(h,data)actionPlotSegy(h,handles)actionUpdateSegyHeader(h,handles)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function actionWriteSegy(h,handles)data=guidata(h);[filename, pathname] = uiputfile('*.sgy;*.SGY;*.seg*;*.SEGY', 'Set name of SEGY file');if isstr(filename)  % MAKE SURE Segy IS the fileextension    [p,n,ext,v]=fileparts(filename);  if ((strcmp('.sgy',lower(ext))==0)&(strcmp('.segy',lower(ext))==0)), ext='.segy'; end  filename=fullfile(p,[n ext v])  WriteSegyStructure(filename,data.SegyHeader,data.SegyTraceHeaders,data.Data);end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function actionWriteSu(h,handles)data=guidata(h);[filename, pathname] = uiputfile('*.su;*.SU', 'Set name of SEGY file');if isstr(filename)  % MAKE SURE SU IS the fileextension    [p,n,ext,v]=fileparts(filename);  if strcmp('.su',lower(ext))==0, ext='.su'; end  filename=fullfile(p,[n ext v])  WriteSuStructure([filename],data.SegyHeader,data.SegyTraceHeaders,data.Data);end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function actionEditTraceHeader(h,handles)data=guidata(h);data.SegyTraceHeaders=GUIEditSegyTraceHeader(data.SegyTraceHeaders);guidata(h,data)UpdatePlotSettings(h,handles);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function actionEditSegyHeader(h,handles)data=guidata(h);data.SegyHeader=GUIEditSegyHeader(data.SegyHeader);guidata(h,data)UpdatePlotSettings(h,handles);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function actionPlotXY(h,handles)data=guidata(h);GUIPlotXY(data.SegyTraceHeaders);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function UpdatePlotSettings(h,handles)data=guidata(h);set(handles.eCaxisMin,'String',data.SETTINGS.cmin);set(handles.eCaxisMax,'String',data.SETTINGS.cmax);set(handles.eCaxisGain,'String',data.SETTINGS.gain);set(handles.sCaxisGain,'Value',log10(data.SETTINGS.gain));%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function actionPlotSegy(h,handles)%% CREATE A FUNCTION THAT PLOTS THE SEISMIC DATA BASED ON %%  A SERIES OF PLOTTING SETTING (WIGGLE/AREA/MAX/MIN AMPLIUDE....)data=guidata(h);traces=1:1:size(data.Data,2);axes(handles.axMain)%imagesc(traces,data.HeaderInfo.t,data.Data)wiggle(data.Data,[],data.SegyHeader.time,[traces],'VA')caxis([data.SETTINGS.cmin./data.SETTINGS.gain data.SETTINGS.cmax./data.SETTINGS.gain])xlabel(['offset'])    ax=axis;zoom onaxes(handles.axTop)area(traces,data.HeaderInfo.offset)axTop=axis;axis([ax(1) ax(2) axTop(3) axTop(4)]); %% MAKE SURE X AXIS IS THE SAMEylabel('offset');

⌨️ 快捷键说明

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