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

📄 l_rm_nulls.m

📁 实现地震勘探中
💻 M
字号:
function wlog=l_rm_nulls(wlog,action,mnemonics)% Function removes leading and trailing rows from log curves if they contain % null values; with option "anywhere", every row with a NaN in one of the % listed curves is removed.% Null values bracketed by non-null values may be retained. The function assumes% that null values are represented by NaNs. If this is not the case they are % replaced by NaNs in the output structure.%% Written by:  E. R.: March 6, 2000% Last updated: October 2, 2007:  Generalize input to handle dataset vectors; bug fixes%%        wlog=l_rm_nulls(wlog,action,mnemonics)% INPUT% wlog   log structure or structure vector% action  optional parameter which controls action to be performed; possible values are:%        'all'  leading and trailing rows are removed if the non-depth %               curves listed in "mnemonics" are all NaN  (DEFAULT).%        'any'  leading and trailing rows are removed if any of the non-depth %               curves listed in "mnemonics" has a NAN value%        'anywhere' every row with a NaN in one of the curves listed %               in "mnemonics" is removed (not just the leading/trailing rows) %        Default: action='all'% mnemonics  optional cell array of mnemonics to be considered %        if not given or if empty then all curves are used%        Default: mnemonics=[];% OUTPUT% wlog   output log structure%% EXAMPLE%        wlog=l_data;   % Create log structure with null values%        wlog.curves([1:4,10:20],2)=NaN;%        wlog.null=NaN;%%        wlog1=l_rm_nulls(wlog,'anywhere',{'DTp','RHO'});%        [isnull(wlog),isnull(wlog1)]     % Must be [true,false]%%        wlog2=l_rm_nulls(wlog,'any',{'DTp','RHO'});%        [isnull(wlog),isnull(wlog2)]     % Must be [true,true]if ~istype(wlog,'well_log')   error('First input argument must be a well log.')endif nargin == 1   mnemonics=[];   action='all';elseif nargin == 2   mnemonics=[];endfor ii=length(wlog):-1:1   wlog(ii)=rm_nulls_no1(wlog(ii),action,mnemonics);   %#ok Loop starts with largest elementend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function wlog=rm_nulls_no1(wlog,action,mnemonics)global S4Mif ~isnull(wlog)   % If no null values are present in log curves ...      returnendm=size(wlog.curves,2);if nargin < 2 || isempty(action)   action='all';endif nargin < 3 || isempty(mnemonics)   idx=2:m;else   if ischar(mnemonics)      mnemonics={mnemonics};   elseif ~iscell(mnemonics)      error(' Input parameter mnemonics must be a string or a cell array of strings')   end   nm=length(mnemonics);   if S4M.case_sensitive      idx=find(ismember(wlog.curve_info(:,1),mnemonics));   else      idx=find(ismember(lower(wlog.curve_info(:,1)),lower(mnemonics)));   end     if length(idx) ~= nm      disp([char(13),' Curves requested:'])      disp(mnemonics)      disp(' Curves in log structure:')      disp(wlog.curve_info(:,1)')      error(' Not all requested curves available in log structure')   endendif ~isempty(wlog.null) && ~isnan(wlog.null)  % Replace numeric null value (e.g. -999.25) by NaN    wlog.curves(wlog.curves == wlog.null)=NaN;   wlog.null=NaN;   endswitch actioncase {'any','anywhere'}   test=sum(wlog.curves(:,idx),2);case 'all'   test=min(wlog.curves(:,idx),[],2);otherwise   error(['Action "',action,'" is not defined'])endswitch actioncase {'anywhere'}   wlog.curves=wlog.curves(~isnan(test),:);otherwise   ia=find(~isnan(test),1);   ie=find(~isnan(test),1,'last');   wlog.curves=wlog.curves(ia:ie,:);endwlog.first=wlog.curves(1,1);wlog.last=wlog.curves(end,1);wlog.step=depths2step_with_checking(wlog.curves(:,1));%	Check if "wlog.null" needs to be changedif all(all(~isnan(wlog.curves(:,2:end))))   wlog.null=[];end

⌨️ 快捷键说明

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