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

📄 segymat.m

📁 这是用matlab对segy数据进行处理
💻 M
📖 第 1 页 / 共 3 页
字号:
  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 + -