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

📄 inv_taup.old.m

📁 著名的seismiclab的代码 是地震学研究人员必备的工具
💻 M
字号:
function [m,M,Q] = inv_taup(d,dt,h,q,N,flow,fhigh,mu,type);%INV_TAUP: Inverse Radon transform%%  Given a cmp gather this subroutine is used%  to compute the  Radon panel. By Radon Transform%  we mean the Linear or Parabolic Radon Transform.%%  [m] = inv_taup(d,dt,h,q,N,flow,fhigh,mu,type)% %  IN   d: seismic traces ( d(nt,nh) %       dt: sampling in sec%       h(nh) offset or position of traces in meters%       q(nq) ray parameters  if N=1%             residual moveout at far offset if N=2%       N:1 Linear tau-p  %        :2 Parabolic tau-p%       flow:  freq.  where the inversion starts in HZ (> 0Hz)%       fhigh: freq.  where the inversion ends in HZ   (< Nyquist) %       mu: regularization parameter %       type: 'ls' Least-squares solution%             'hr' non-iterative high resolution %%  OUT  m: the linear or parabolic tau-p panel [m(nt,nq)]%%  SeismicLab%  Version 1%%  written by M.D.Sacchi, last modified December 10,  1998.%  sacchi@phys.ualberta.ca%%  Copyright (C) 1998 Signal Analysis and Imaging Group%                     Department of Physics%                     The University of Alberta%[nt,nh]= size(d);nq = max(size(q));if N==2; h=h/max(abs(h));end;  nfft = 2^nextpow2(nt);D = fft(d,nfft,1);M = zeros(nfft,nq);i = sqrt(-1);ilow  = floor(flow*dt*nfft)+1; if ilow<1; ilow=1;end;ihigh = floor(fhigh*dt*nfft)+1;if ihigh>floor(nfft/2)+1; ihigh=floor(nfft/2)+1;endQ = eye(nq);Qtr = nq;Mtr = nq*nh;beta = mu*Mtr/Qtr;for ifreq=ilow:ihigh f = 2.*pi*(ifreq-1)/nfft/dt; L = exp(i*f*(h.^N)'*q);  y = D(ifreq,:)'; x = L'*y; MATRIX = L'*L;  A = MATRIX + beta*Q; x = inv(A) *L'* y;  M(ifreq,:) = x'; M(nfft+2-ifreq,:) = conj(x)';if type=='hr';    xx = x /max(abs(x)); Q = diag(1./(abs(xx).^2+0.0001)); endend M(nfft/2+1,:) = zeros(1,nq);m = real(ifft(M,[],1));m = m(1:nt,:);return

⌨️ 快捷键说明

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