?? wigb.m
字號:
function wigb (a,scal,x,z,amx)%WIGB: Plot seismic data using wiggles%必須徹底弄明白這個函數(shù)% WIGB(a,scal,x,z,amx) %% IN a: seismic data% scale: multiple data by scale% x: x-axis;% z: vertical axis (time or depth)% x and z are vectors with offset and time.%% If only 'a' is enter, 'scal,x,z,amn,amx' are decided automatically; % otherwise, 'scal' is a scalar; 'x, z' are vectors for annotation in % offset and time, amx are the amplitude range.%% Author:% Xingong Li, Dec. 1995% Changes: % Jun11,1997: add amx% May16,1997: updated for v5 - add 'zeros line' to background color% May17,1996: if scal ==0, plot without scaling% Aug6, 1996: if max(tr)==0, plot a line % 07-7-13,半懂if nargin == 0 %默認情況下10道,10采樣點 nx=10;nz=10; a = rand(nz,nx)-0.5; end;[nz,nx]=size(a); %nz采樣點數(shù),nx道數(shù)trmx= max(abs(a)); %trmx記錄每一道的絕對值的最大值if (nargin <= 4); amx=mean(trmx); end;%默認情況下,amx即為各道振幅絕對值最大值的平均值if (nargin <= 2); x=[1:nx]; z=[1:nz]; end;%默認情況下的x,z值if (nargin <= 1); scal =1; end;%默認情況下的縮放比例為1if nx <= 1; disp(' ERR:PlotWig: nx has to be more than 1');return;end;%道數(shù)小于等于1道,顯示錯誤信息 % take the average as dx dx1 = abs(x(2:nx)-x(1:nx-1)); dx = median(dx1);%在標注x軸的情況時,根據(jù)標注大小,必須對所有數(shù)據(jù)處理一下 dz=z(2)-z(1); xmx=max(a(:)); xmn=min(a(:)); %所有數(shù)據(jù)點的最大值和最小值 if scal == 0; scal=1; end;%縮放比設定為1 a = a * dx /amx; %在沒有指定x,z的情況下,dx=1 a = a * scal; fprintf(' PlotWig: data range [%f, %f], plotted max %f \n',xmn,xmx,amx); %-------------------------------------------------------------------------% set display range x1=min(x)-2.0*dx; x2=max(x)+2.0*dx;z1=min(z)-dz; z2=max(z)+dz; set(gca,'NextPlot','add','Box','on', ... 'XAxisLocation','top', ... 'XLim', [x1 x2], ... 'YDir','reverse', ... 'YLim',[z1 z2]);%對坐標軸進行一些設置,并設置了坐標軸上的最大與最小值,x軸上移,受math啟發(fā).學會自己查set(gca) fillcolor = [0 0 0]; linecolor = [0 0 0]; linewidth = 0.1; z=z'; % input as row vector zstart=z(1); zend =z(nz);for i=1:nx, if trmx(i) ~= 0; % skip the zero traces tr=a(:,i); % --- one scale for all section s = sign(tr) ; i1= find( s(1:nz-1) ~= s(2:nz) ); % 符號不同,說明什么,有過零點啊 npos = length(i1);%零點個數(shù) %12/7/97 zadd = i1 + tr(i1) ./ (tr(i1) - tr(i1+1)); %locations with 0 amplitudes aadd = zeros(size(zadd)); [zpos,vpos] = find(tr >0); [zz,iz] = sort([zpos; zadd]); % indices of zero point plus positives aa = [tr(zpos); aadd]; aa = aa(iz); % be careful at the ends if tr(1)>0, a0=0; z0=1.00; else, a0=0; z0=zadd(1); end; if tr(nz)>0, a1=0; z1=nz; else, a1=0; z1=max(zadd); end; zz = [z0; zz; z1; z0]; aa = [a0; aa; a1; a0]; zzz = zstart + zz*dz -dz; patch( aa+x(i) , zzz, fillcolor); line( 'Color',[1 1 1],'EraseMode','background', ... 'Xdata', x(i)+[0 0], 'Ydata',[zstart zend]); % remove zero line%'LineWidth',linewidth, ...%12/7/97 'Xdata', x(i)+[0 0], 'Ydata',[z0 z1]*dz); % remove zero line line( 'Color',linecolor,'EraseMode','background', ... 'LineWidth',linewidth, ... 'Xdata', tr+x(i), 'Ydata',z); % negatives line else % zeros trace line( 'Color',linecolor,'EraseMode','background', ... 'LineWidth',linewidth, ... 'Xdata', [x(i) x(i)], 'Ydata',[zstart zend]); end;end;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -