How to convolve a wavelet with a signal to make a wedge model?
Show older comments
I asked my question in public but I have not got any help. I would appreciate if you can help me as I am new in MATLANB :(.
I have a signal and I want to convolve it with a wavelet and make a wedge model. It is a seismic wedge model and I want to make a single low impedance layer wedge model. I truly appreciated in advance!
My wavelet code is:
%.............................................
fr=30;% frequency
dt=.002;
T=0.1;
tt=-T:dt:T;
tsh=0.008;%time shifting
tr=round(length(tt)/2);
t=tt(tr:end);
zpr=(1-tt.^2*fr^2*pi^2).*exp(-tt.^2*pi^2*fr^2);%zero-phase ricker
figure(10)
plot(zpr)
%................................................
My signal is:
%...............................................
data=xlsread('1');
amp=data(:,2);%us/f
time=data(:,1);%ms
tim=time(1:1:end);
am=amp(1:1:end);
len=length(tim);
for i=1:len
if am(i)==-999.25
am(i)=am(i-1);
end
end
data1=zeros(len,2);
tti=round(tim);
for j=2:len
r(j)=(am(j)-am(j-1))/(am(j)+am(j-1));% reflection coefficients
end
plot(r)
%%%%%%%%%
I can convolve the wavelet and signal to make a simple synthetic trace but not a wedge.
%..............................................................
s=conv(r,zpr);
if mod(length(zpr),2)==0
s=s(length(zpr)/2:end-length(zpr)/2);
else
s=s((length(zpr)-1)/2:end-(length(zpr)-1)/2);
end
ls=length(s);
s(ls)=[];
[m1 n1]=size(s);
if m1==1
s=s';
end
n=10;
dx=2;
scal=5;
figure(1)
for i=1:n
b=(i-1)*dx;
a=scal*s+b;
c=a;
a(a<b)=b;
plot(c,tti,'black')
hold on
fill(a,tti,'k','linestyle','none');
end
hold off
set(gca,'YDir','reverse')
xlim([-dx (n+1)*dx])
ylim([700 2826])
ylabel('millisecent')
title('synthetic trace made of zero-phase ricker') ;
Accepted Answer
More Answers (0)
Categories
Find more on Continuous Wavelet Transforms in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!