800522 发表于 2008-1-9 16:15

werner 反褶积的程序

我是第一次来论坛,请那位高手帮帮我,帮我找一些沃纳反褶积的资料和程序,谢谢!!!

风花雪月 发表于 2008-1-13 09:54

个人只找到matlab和vc的,没发现fortran的

800522 发表于 2008-1-15 11:23

谢谢你

那把你找到的matlab和vc的能否让我看看,谢谢阿

风花雪月 发表于 2008-1-18 10:38

原帖由 800522 于 2008-1-15 11:23 发表 http://www.chinavib.com/forum/images/common/back.gif
那把你找到的matlab和vc的能否让我看看,谢谢阿

留下你的email

800522 发表于 2008-1-22 17:08

我的邮箱是:wangyani0704@yahoo.com.cn

wangyani0704@yahoo.com.cn

风花雪月 发表于 2008-1-29 15:17

function o= ls_inv_filter(w,wavelet,mu)
%LS_INV_FILTER: Spiking deconvolution
%
% This program computes an inverse filter (Spiking filter)
% from an estimate of a seismic wavelet. The actual
% output (convolution of the filter with the wavelet) is
% also computed.
%
% = LS_INV_FILTER(w,NF,Lag,mu)
%
% IN w: the wavelet
% NF: lenght if the inverse filter
% Lag: the position of the spike in the desired output
% mu: Prewhitening in %
%
% OUT f: the filter
% o: the ouput or convolution of the filter with
% the wavelet
%
% Example:
%
% w = ; % the wavelet
% = ls_inv_filter(w,20,1,2); % the filter and the output
% figure(1); plot(f);title('Filter')
% figure(2); plot(o);title('Wavelet \otimes Filter')

NW = max(size(w)); % lenght of the wavelet

NF=max(size(wavelet));
=size(wavelet);
if mc <= mr; wavelet = wavelet'; end;

=size(w);
if mc <= mr; w = w'; end;

b=conv(wavelet,w);
C = convmtx(w,NF); % Convolution matrix

R = C'*C+mu*eye(NF)/100.; % Toeplitz Matrix
rhs = C'*b; % Right hand side vector
f = inv(R)*rhs; % Filter

o = conv(f,w); % Actual output
% o=o(NF:NW+(NF-1),:);
% o=o(1:NW,:);
n=floor(NF/2);
o=o(n:NW+(n-1),:);
页: [1]
查看完整版本: werner 反褶积的程序