%道内均衡
load DATA.dat
DATA;
m = 10;%滑动时间窗口包括的采样点数为2m+1,可以从界面输入;
[points,traces] = size(DATA);
N = fix((points-m-1)/m);%滑动区间个数
R = rem((points-m-1),m);
E = zeros(1,N);%滑动时窗内振幅和
W = ones(1,N+1);%道内均衡加权系数(滑动窗口)
F = ones(1,points);%每个采样点的加权系数
for tr = 1:traces
Row = DATA(:,tr)';
for k = 1:N-1
for s = (k-1)*m+1:(k+1)*m+1
E(k) = E(k)+Row(s);
end
W(k) = (2*m+1)/E(k);
W(N) = W(N-1);
W(N+1) = W(N);
end
for i = 1:points
if i < m+1
F(i) = W(1);
elseif i > N*m+1
F(i) = W(N);
else
id = fix((i-m-1)/m)+1;
ik = rem(i-m-1,m);
F(i) = W(id)+[W(id+1)-W(id)]*ik/m;
end
end
DATA(:,tr) = Row.*F;
end
评论0