1. a) FFT pada sinyal time series dan sinyal domain posisi ke domain frekuensi.
Script yang digunakan untuk menghasilkan FFT sinyal time series menjadi
domain frekuensi adalah sebagai berikut : Terlampir
Dengan demikian, dapat diperoleh plot magnitude terhadap frekuensi.
Untuk plot sinyal domain posisi, digunakan phantom image yang merepresentasikan
sinyal pada posisi x dan y;
source_x2 = x0;
source_y2 = (4*dy);
receiver_x4=xend;
receiver_y4=(2*dy);
receiver_x5=xend;
receiver_y5=(4*dy);
receiver_x6=xend;
receiver_y6=(6*dy);
source_x3 = x0;
source_y3 = (6*dy);
receiver_x7=xend;
receiver_y7=(2*dy);
receiver_x8=xend;
receiver_y8=(4*dy);
receiver_x9=xend;
receiver_y9=(6*dy);
X=[xend];
Y=[receiver_y1 receiver_y2 receiver_y3 receiver_y4 receiver_y5
receiver_y6 receiver_y7 receiver_y8 receiver_y9];
%kasusnya adalah HOMOGEN maka semua panjang lintasan ray tracing tiap
blok
%dianggap sama
panjang_ray=zeros(1,length(X));
for i=1:3
panjang_ray(i)=((X-(source_x)).^2+ (Y(i)-(source_y)).^2).^0.5;
end
for j=4:6
panjang_ray(j)=((X-(source_x2)).^2+ (Y(j)-(source_y2)).^2).^0.5;
end
for k=7:9
panjang_ray(k)=((X-(source_x3)).^2+ (Y(k)-(source_y3)).^2).^0.5;
end
PRB(1)=panjang_ray(1)./9;
PRB(2)=panjang_ray(2)./9;
PRB(3)=panjang_ray(3)./9;
PRB(4)=panjang_ray(4)./9;
PRB(5)=panjang_ray(5)./9;
PRB(6)=panjang_ray(6)./9;
PRB(7)=panjang_ray(7)./9;
PRB(8)=panjang_ray(8)./9;
PRB(9)=panjang_ray(9)./9;
plot(source_x,source_y,X,Y,'o','MarkerEdgeColor','g','MarkerFaceColor','g
','MarkerSize',10)
hold on
plot(source_x,source_y,'p','MarkerEdgeColor','y','MarkerFaceColor','y','M
arkerSize',20);
end
for j=4:6
line([x0 1200],[4*dy Y(j)],'color','r','LineStyle','-','LineWidth',3)
hold on
plot(source_x2,source_y2,X,Y,'o','MarkerEdgeColor','g','MarkerFaceColor',
'g','MarkerSize',10)
hold on
plot(source_x2,source_y2,'p','MarkerEdgeColor','y','MarkerFaceColor','y',
'MarkerSize',20);
end
for k=7:9
line([x0 1200],[6*dy Y(k)],'color','r','LineStyle','-','LineWidth',3)
hold on
plot(source_x3,source_y3,X,Y,'o','MarkerEdgeColor','g','MarkerFaceColor',
'g','MarkerSize',10)
hold on
plot(source_x3,source_y3,'p','MarkerEdgeColor','y','MarkerFaceColor','y',
'MarkerSize',20);
end
set(gca,'ydir','reverse')
xlim([0 1200]); ylim([0 1200]);
xlabel('Koordinat X(m)'); ylabel('Koordinat Y (m)');
title ('Forward Modelling 1 Lapis')
b. Forward Modelling 1 lapisan with anomali
SCRIPT
close all
clear all
clc
source_x2 = x0;
source_y2 = (4*dy);
receiver_x4=xend;
receiver_y4=(2*dy);
receiver_x5=xend;
receiver_y5=(4*dy);
receiver_x6=xend;
receiver_y6=(6*dy);
source_x3 = x0;
source_y3 = (6*dy);
receiver_x7=xend;
receiver_y7=(2*dy);
receiver_x8=xend;
receiver_y8=(4*dy);
receiver_x9=xend;
receiver_y9=(6*dy);
X=[xend];
Y=[receiver_y1 receiver_y2 receiver_y3 receiver_y4 receiver_y5
receiver_y6 receiver_y7 receiver_y8 receiver_y9];
%kasusnya adalah HOMOGEN maka semua panjang lintasan ray tracing tiap
blok
%dianggap sama
panjang_ray=zeros(1,length(X));
for i=1:3
panjang_ray(i)=((X-(source_x)).^2+ (Y(i)-(source_y)).^2).^0.5;
end
for j=4:6
panjang_ray(j)=((X-(source_x2)).^2+ (Y(j)-(source_y2)).^2).^0.5;
end
for k=7:9
panjang_ray(k)=((X-(source_x3)).^2+ (Y(k)-(source_y3)).^2).^0.5;
end
PRB(1)=panjang_ray(1)./9;
PRB(2)=panjang_ray(2)./9;
PRB(3)=panjang_ray(3)./9;
PRB(4)=panjang_ray(4)./9;
PRB(5)=panjang_ray(5)./9;
PRB(6)=panjang_ray(6)./9;
PRB(7)=panjang_ray(7)./9;
PRB(8)=panjang_ray(8)./9;
PRB(9)=panjang_ray(9)./9;
plot(source_x,source_y,X,Y,'o','MarkerEdgeColor','g','MarkerFaceColor','g
','MarkerSize',10)
hold on
plot(source_x,source_y,'p','MarkerEdgeColor','y','MarkerFaceColor','y','M
arkerSize',20);
end
for j=4:6
line([x0 1200],[4*dy Y(j)],'color','g','LineStyle','-','LineWidth',3)
hold on
plot(source_x2,source_y2,X,Y,'o','MarkerEdgeColor','g','MarkerFaceColor',
'g','MarkerSize',10)
hold on
plot(source_x2,source_y2,'p','MarkerEdgeColor','y','MarkerFaceColor','y',
'MarkerSize',20);
end
for k=7:9
line([x0 1200],[6*dy Y(k)],'color','g','LineStyle','-','LineWidth',3)
hold on
plot(source_x3,source_y3,X,Y,'o','MarkerEdgeColor','g','MarkerFaceColor',
'g','MarkerSize',10)
hold on
plot(source_x3,source_y3,'p','MarkerEdgeColor','y','MarkerFaceColor','y',
'MarkerSize',20);
end
colormap(jet); colorbar;
set(gca,'ydir','reverse')
xlim([0 1200]); ylim([0 1200]);
xlabel('Koordinat X(m)'); ylabel('Koordinat Y (m)');
title ('Forward Modelling 1 Lapis + Anomali')
3. Forward Modelling 2 Lapisan
SCRIPT
%% Input Data & Parameter
clc
close all
clear all
Sourcey1=2:3:20
Sourcex1=zeros(length(Sourcey1))
Receivery1=2:3:20
Receiverx1=(ones(length(Receivery1)))*10;
%plot source dan receiver
x0 = 0;
y0 = 0;
dx = 10;
dy = 10;
Xgrid = x0:dx:10;
Ygrid = y0:dy:20;
nx = length(Xgrid)-1;
ny = length(Ygrid)-1;
[Meshx Meshy] =meshgrid(Xgrid,Ygrid);
Velocity = [1000 ;2000];
VelocityPlot = [Velocity; Velocity(size(Velocity,1),:)];
VelocityPlot = [VelocityPlot VelocityPlot(:,size(VelocityPlot,2))];
%% Ray Tracing Bending
%Bending Point
BatasLapisanX = 0:0.25:10;
BatasLapisanY = 10*ones(1,length(BatasLapisanX));
%raytrace straight diganti dengan zeros dan batas lapisan Y=sourceY
minTime = inf;
% if length
figure(1)
pcolor(Meshx,Meshy,VelocityPlot)
set(gca,'Ydir','Reverse')
hold on
plot(Sourcex1,Sourcey1,'*k')
hold on
plot(Receiverx1,Receivery1,'vb')
hold on
plot(BatasLapisanX,BatasLapisanY,'.w')
hold on
title('Bending Ray Tracing')
xlabel('Distance')
ylabel('Depth')
colorbar
hold on
for j=1:length(Sourcex1)
Sourcex=Sourcex1(j);
for k=1:length(Sourcey1)
Sourcey=Sourcey1(k);
for l=1:length(Receiverx1)
Receiverx=Receiverx1(l);
for m=1:length(Receivery1)
Receivery=Receivery1(m);
% jika source dan receiuver keduanya terletak di bawah batas
lapisan.
if and((Sourcey>BatasLapisanY(k)),Receivery>BatasLapisanY(k))==1
RayPathx1 = [Sourcex Receiverx];
RayPathy1 = [Sourcey Receivery];
plot(RayPathx1,RayPathy1,'r')
TimeCalculation=sqrt((Receivery)^2+(Sourcey)^2)/Velocity(2);
hold on
%jika source dan receiver keduanya terletak di atas batas lapisan
elseif and((Sourcey<BatasLapisanY(k)),Receivery<BatasLapisanY(k))==1
RayPathx1 = [Sourcex Receiverx];
RayPathy1 = [Sourcey Receivery];
plot(RayPathx1,RayPathy1,'r')
TimeCalculation=sqrt((Receivery)^2+(Sourcey)^2)/Velocity(1);
hold on
else %jika salah satu terletak di atas batas lapisan dan satu lagi
terletak di bawah lapisan.
for i=1:length(BatasLapisanX)
Time1=sqrt((Sourcex-BatasLapisanX(i))^2+(Sourcey-
BatasLapisanY(i))^2)/Velocity(1);
Time2=sqrt((Receiverx-BatasLapisanX(i))^2+(Receivery-
BatasLapisanY(i))^2)/Velocity(2);
TimeCalculation = Time1+Time2;
if TimeCalculation < minTime
minTime = TimeCalculation;
RayPathx = [Sourcex BatasLapisanX(i) Receiverx];
RayPathy = [Sourcey BatasLapisanY(i) Receivery];
%plot(RayPathx,RayPathy,':b')
%hold on
end
end
minTime= inf;
plot(RayPathx,RayPathy,'r')
hold on
end
timefix(1,1)=0;
timefix(k+1,1)=k;
timefix(1,m+1)=m;
timefix(k+1,m+1)=TimeCalculation;
end
end
end
end
%% Visualisasi
Tabel Velocity tiap Grid