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

📄 s_history.m

📁 实现地震勘探中
💻 M
字号:
function seismic=s_history(seismic,action,parameters)% Function operates on the history field of a seismic structure; displays data set history% if no output argument is given%% Written by: E. R.: March, 2001% Last updated: November 29, 2006: handle structure vectors %%             seismic=s_history(seismic,action,parameters)% INPUT% seismic  seismic structure or structure vector whose history field(s) %          needs to be created, modified, ...% action   string describing the action to take; possible values are:%         'add'      Add a history field to the seismic structure%         'append'   Append new information about the present command%                    to seismic.history (if it exists)%         'merge'    Append history field from another seismic structure%         'delete'   Delete the last cell of seismic.history %                    (if the history field exists; not yet implemented)%         'list'     List seismic.history (default if no action specified)% parameters for 'add' and 'append': character string to be posted in history field;%            for 'merge': history field of a seismic structure% OUTPUT% seismic    seismic structure whose history field has been created/appended%%% EXAMPLE%        seismic=s_data;%        s_history(seismic)global S4Mif ~S4M.history || isempty(S4M.start_time)    returnendif nargin == 1   action='list';endif ~isfield(seismic(1),'history') && ~strcmpi(action,'add')   returnend if ~strcmp(action,'list')%       Find level and name of the calling program; return to calling program if%       level is too deep.   temp=dbstack;     if length(temp) < 2         % Return if not called by function      return   end   level=size(temp,1)-1;   if isempty(S4M.start_level)      S4M.start_level=level;      level_difference=0;   else      level_difference=level-S4M.start_level;      if level_difference > S4M.history_level         return      elseif level_difference < 0         level_difference=0;      end   end   [dummy,filename] = fileparts(temp(2).name);  %#ok First output argument is not required   program=upper(filename);else   level_difference=0;  % Dummy variable   program='';          % Dummy variableendif nargin < 3   parameters=[];end if strcmpi(action,'add')   [seismic.history]=deal([]);endfor ii=1:length(seismic)   [seismic(ii),terminate]=act_on_history_request(seismic(ii),action, ...                           parameters,level_difference,program);   if terminate      break   endendif nargout == 0    if ~strcmpi(action,'list')      display_seismic_history(seismic(1))   end   clear seismicend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function display_seismic_history(seismic)spaces=blanks(size(seismic.history,1)+1)';% commas=char(44*ones(size(seismic.history,1)+1,1));history=[char('Day/Time of Program Start',char(seismic.history(:,1))),spaces,...         char(' TiP',num2str(cat(1,seismic.history{:,2}))), spaces, ...         char('Program',char(seismic.history(:,3))),spaces, ...         char('Parameters',char(seismic.history{:,4}))];disp(history)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function [seismic,terminate]=act_on_history_request(seismic,action, ...                             parameters,level_difference,program)global S4Mterminate=false;switch actioncase 'add'   if isempty(S4M.start_time)      S4M.start_time=clock;    % Date and time as 6-elemenmt array    end   if isempty(S4M.time)      S4M.time=datum;          % Date and time as string    end   if S4M.history          t=clock-S4M.start_time;      seismic.history={[blanks(level_difference),S4M.time, ...          blanks(S4M.history_level-level_difference)], ...          round(((24*t(3)+t(4))*60+t(5))*60+t(6)),program,parameters};   endcase  'append'   t=clock-S4M.start_time;   seismic.history=[seismic.history;{[blanks(level_difference),S4M.time, ...         blanks(S4M.history_level-level_difference)], ...         round(((24*t(3)+t(4))*60+t(5))*60+t(6)),program,parameters}];case  'merge'   merge=parameters;   m=size(merge,1);   prefix='<< ';   for ii=1:m      seismic.history=[seismic.history; ...            {[prefix,merge{ii,1}],merge{ii,2},merge{ii,3},merge{ii,4}}];   endcase 'list'   terminate=true;   if ~isfield(seismic(1),'history')      disp(' Input data set has no history field.')      clear seismic;      return   end   display_seismic_history(seismic(1))otherwise   error(['Action "',action,'" unknown or not yet implemented.'])             end

⌨️ 快捷键说明

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