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

📄 l_curve_math.m

📁 基于Matlab的地震数据处理显示和测井数据显示于处理的小程序
💻 M
字号:
function wlog=l_curve_math(wlog,action,expression,units,description)% Function creates new log curve using the mathematical expression contained in the% third input argument% Written by: E. R.: September 2, 2000% Last updated: September 29, 2003: use curve_index1 to get index of curve; %                           input log and output log have the same name%%    		wlog=l_curve_math(wlog,action,expression,units,description)% INPUT% wlog         log structure% action        defines action to take. Possible values are:%              'add'      Add curve. Gives error message if curve mnemonic already exists%              'add_ne'   Add curve with mnemonic mnem. Replaces it if it already exists.%              'replace'  Replaces curve with mnemonic mnem; error if%                         curve mnemonic does not exist% expression    expression in MATLAB syntax between curves of wlog. These curves are  %               represented by their mnemonics% units         units of measurement of the newly created/replaced curve%               if 'action' is 'replace' and "units" is empty or not given, %                    the units of the replaced curve are retained% description   description of the newly created/replaced curve%               if 'action' is 'replace' and "description" is empty or not given, %                    the description of the replaced curve is retained%% OUTPUT% wlog         input log with the additional curve appended (including an updated field "curve_info")%% EXAMPLE%               wlog=l_curve_math(wlog,'add','vel=1.e6/DT','ft/sec','Velocity')%                    computes the velocity from the sonic log. An error message will be %                    issued if "wlog" does not have a curve with mnemonic "DT" or if a %                    curve with mnemonic "vel" already exists.%       Find all the words in the expressionwords=lower(extract_words(expression));%       Check if mnemonic of output curve (first variable in expression) is already in usemnem=words{1};[index,dummy]=curve_index1(wlog,mnem);if ~isempty(index) & strcmpi(action,'add')   error([' Curve mnemonic "',mnem,'" already exists in log structure "',inputname(1),'"'])elseif isempty(index) & strcmpi(action,'replace')   error([' Curve mnemonic "',mnem,'" does not exist in log structure "',inputname(1),'"'])elseif ~isempty(index) & strcmpi(action,'add_ne')   action='replace';end%       Remove multiple occurrences of a wordwords=unique(words);%       Find all the curve mnemonics in "words" and assign curve values to variables with those names idx=find(ismember(lower(wlog.curve_info(:,1)),words));if isempty(idx)   disp([' No curve mnemonics found in expression "',expression,'"'])   disp(' Curve mnemonics available')   disp(wlog.curve_info(:,1)')   error(' Abnormal termination')else  for ii=1:length(idx)    eval([lower(char(wlog.curve_info(idx(ii),1))),' = wlog.curves(:,idx(ii));']);  endend%       Modify expression to be valid for vectorsexpr=strrep(lower(expression),'.*','*');expr=strrep(expr,'*','.*');expr=strrep(expr,'./','/');expr=strrep(expr,'/','./');expr=strrep(expr,'.^','^');expr=strrep(expr,'^','.^');%       Evaluate modified expression     tryeval([expr,';'])    catchdisp([' Expression "',expression,'" appears to have errors'])disp(' Curve mnemonics found in expression:')disp(wlog.curve_info(idx,1)')disp(' Curve mnemonics available:')disp(wlog.curve_info(:,1)')disp(' Misspelled curve mnemonics would be interpreted as variables')eval(expr);error(' Abnormal termination')    end%       Add new curve or replace existing oneswitch action               case {'add','add_ne'}wlog.curves=[wlog.curves,eval(mnem)];wlog.curve_info=[wlog.curve_info;{mnem,units,description}];if ~isfield(wlog,'null')	%  Add null field if needed.		   idx=sum(isnan(wlog.curves(:,end)));   if idx > 0      wlog.null=NaN;   endend               case 'replace'wlog.curves(:,index)=eval(mnem);if ~exist('units','var') | isempty(units)   units=l_gu(wlog,mnem);endif ~exist('description','var') | isempty(description)   description=l_gd(wlog,mnem);endwlog.curve_info(index,:)={mnem,units,description};       if ~isfield(wlog,'null')	%  Add null field if needed.		   idx=sum(isnan(wlog.curves(:,index)));   if idx > 0      wlog.null=NaN;   endend                otherwiseerror(' Unknown value for input parameter "action".')                endif ~isempty(index)  &  index == 1	% Change depth column   index=find(isnan(wlog.curves(:,1)));   if ~isempty(index)      wlog.curves(index,:)=[];   end   wlog.first=wlog.curves(1,1);   wlog.last=wlog.curves(end,1);   wlog.step=depths2step(wlog.curves(:,1));end

⌨️ 快捷键说明

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