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

📄 segymat.m

📁 matlab源程序
💻 M
📖 第 1 页 / 共 3 页
字号:
  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 + -