Visualisasi Data Seismik 2 Dimensi Dengan Matlab

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 26

1. Visualisasi data seismik 2 dimensi.

% Copyright: 2018 - Teknik Geofisika, Universitas Pertamina


% URL: https://sites.google.com/site/metkomup/programming
% Cite: Virginia, Intang Pinki; Arahman, Nanditha; Laurens, Kinta Rahma Aulika; Pertiwi,
Tiaraningtias Bagus;
% Suryani, Adelia (2018): Visualisasi Data Seismik 2 Dimensi. figshare.
https://doi.org/10.6084/m9.figshare.5946649.v1
clear; clc; close;
% Read data segy
data = ReadSegy('Bla-bla.sgy');
data = read_segy_file('Bla-bla.sgy',{'traces','CMP<201'});
a = [1:(4/1499):5]';
time = [1:1500]*0.002;

% Visualisasi data
for i = 1:200
data2 = data([1:1500],i).*a;
new = (data2+10000*i)./10000;
level_max = max(new);
level_min = min(new);
level_ave = ((level_max+level_min)/2)+0.05;
plot(new,time);
hold on;
area(max(new, level_ave),time,level_ave,'EdgeColor','none','FaceColor','b')
area(min(new, level_ave),time,level_ave,'EdgeColor','none','FaceColor','r')
set(gca,'Ydir','reverse')
set(gca,'XAxisLocation','top');
end

xlabel('CMP')
ylabel('time(s)')
axis([0 200 0 3])
hold off

data100 = data([1:1500],100).*a;
y = data100; % y data
level = 3; % level
figure
plot(y,time)
hold on
area(max(y, level),time, level, 'EdgeColor', 'none', 'FaceColor', 'b')
area(min(y, level),time, level, 'EdgeColor', 'none', 'FaceColor', 'r')

set(gca,'Ydir','reverse')
set(gca,'XAxisLocation','top');
xlabel('CMP')
ylabel('time(s)')
2.Spektrum data seismik sebagai fungsi
kedalaman.
% Copyright: 2018 - Teknik Geofisika, Universitas Pertamina
% URL: https://sites.google.com/site/metkomup/programming
% Cite: Aisy, Safira Rihhadatul; Elsalama, Nadiah Faridah Firdausi; Anugrah, Sari Atika;
Nabila, Afviya;
% Nugraha, Rama Desta (2018): Spektrum Data Seismik sebagai Fungsi Kedalaman. figshare.
https://doi.org/10.6084/m9.figshare.5946658.v1
clear; clc; close;
[data,TraceHeaderInfo,SegyTraceHeaders,SegyHeader] = ReadSegy('seismic_stack.sgy');
clear TraceHeaderInfo, SegyTraceHeaders, SegyHeader;
for i = 1:5
plot((data(:,i)+5000*i),[1:3001]*0.002,'b');
title('Data Seismik');
xlabel('Offset');
ylabel('Time(ms)');
ylim([0 3])
set(gca,'YDir','reverse');
hold on
end
% Memilih trace untuk analisa frekuensi
figure
data100 = data([1:1501],100); %%select data-nth
subplot(2,2,1)
plot(data100,[0:1500]*0.002);
title('Data Seismik');
xlabel('Offset');
ylabel('Time(s)');
ylim([0 3])
set(gca,'YDir','reverse');
subplot(2,2,2)
plot(data100(500:800),[500:800]*0.002);
title('Data Seismik Dangkal');
xlabel('Offset');
ylabel('Time(s)');
ylim([1 1.6])
set(gca,'YDir','reverse');
subplot(2,2,3)
plot(data100(800:1200),[800:1200]*0.002);
title('Data Seismik Menengah');
xlabel('Offset');
ylabel('Time(s)');
ylim([1.6 2.4])
set(gca,'YDir','reverse');
subplot(2,2,4)
plot(data100(1200:1500),[1200:1500]*0.002);
title('Data Seismik Dalam');
xlabel('Offset');
ylabel('Time(s)');
ylim([2.4 3])
set(gca,'YDir','reverse');
% Memilih trace untuk analisa frekuensi
XA = data100(500:1500);
XS = data100(500:800);
XM = data100(800:1200);
XD = data100(1200:1500);
T = 0.002;
Fs = 1/T;
LA = length(XA);
YA = fft(XA);
P2A = abs(YA/LA);
P1A = P2A(1:LA/2+1);
fA = Fs*(0:(LA/2))/LA;
T = 0.002;
Fs = 1/T;
LS = length(XS);
YS = fft(XS);
P2S = abs(YS/LS);
P1S = P2S(1:LS/2+1);
fS = Fs*(0:(LS/2))/LS;
T = 0.002;
Fs = 1/T;
LM = length(XM);
YM = fft(XM);
P2M = abs(YM/LM);
P1M = P2M(1:LM/2+1);
fM = Fs*(0:(LM/2))/LM;
T = 0.002;
Fs = 1/T;
LD = length(XD);
YD = fft(XD);
P2D = abs(YD/LD);
P1D = P2D(1:LD/2+1);
fD = Fs*(0:(LD/2))/LD;
figure
% memilih trace untuk analisa frekuensi
subplot(2,2,1)
plot(fA,P1A)
title('Spectrum All')
xlabel('f(Hz)')
ylabel('Amplitude')
axis([0 70 0 350])
subplot(2,2,2)
plot(fS(1:75),P1S(1:75))
title('Spectrum Dangkal')
xlabel('f(Hz)')
ylabel('Amplitude')
axis([0 70 0 350])
subplot(2,2,3)
plot(fM(1:75),P1M(1:75))
title('Spectrum Menengah')
xlabel('f(Hz)')
ylabel('Amplitude')
axis([0 70 0 350])
subplot(2,2,4)
plot(fD(1:75),P1D(1:75))
title('Spectrum Dalam')
xlabel('f(Hz)')
ylabel('Amplitude')
axis([0 70 0 350])
figure
% memilih trace untuk analisa frekuensi
plot(fA,P1A,'k',fS,P1S,'r',fM,P1M,'g',fD,P1D,'b')
title('Spectrum Comparison')
xlabel('f(Hz)')
ylabel('Amplitude')
axis([0 70 0 350])
legend('all','shallow','middle','deep')
rA = [fA',P1A];
rS = [fS',P1S];
rM = [fM',P1M];
rD = [fD',P1D];
save -ascii rA100.txt rA
save -ascii rS100.txt rS
save -ascii rM100.txt rM
save -ascii rD100.txt rD

save('P1A.txt')

3.Band pass filter untuk data seismik.


% Copyright: 2018 - Teknik Geofisika, Universitas Pertamina
% URL: https://sites.google.com/site/metkomup/programming
% Cite: Hidayat, Lutfi Nur; Syafrudin, Taufan Rifqi; Suwesti, Angreani; Khakim, Umar
Abdul;
% Astuti, Mega Dwi; Hanafi, Mochammad Ibnu (2018): Bandpass Filter pada Data Seismik.
figshare. https://doi.org/10.6084/m9.figshare.5946688.v1
close; clear; clc;

% Input Data
N = input('Masukkan banyak trace: ');
data = ReadSegy('Bla-bla.sgy'); %Membaca Data Seismik
t = [0:500]*0.004; %Rentang Waktu

% Analisis Spektrum Menggunakan FFT


y = data(:,N);
m = sum(y,2);
Fs = 250;
LD = length(m);
YD = fft(m);
P2D = abs(YD/LD);
P1D = P2D(1:LD/2+1);
fD = Fs*(0:(LD/2))/LD;
figure(1)
plot(fD,P1D)
hold on
title ('Spektrum Analisis')
ylabel ('Amplitude')
xlabel ('Frekuensi (Hz)')
axis([min(fD) max(fD) min(P1D) max(P1D)])
% m dan n adalah batas frekuensi yang dimasukkan untuk bandpass filter
% Syarat m < n
m = input('Masukkan batas frekuensi bawah = ');
n = input('Masukkan batas frekuensi atas = ');

% Plot Raw Data


figure(2)
for i = 1:N
subplot(1,2,1)
plot(data(:,i)+300*i,t,'k');
set(gca,'Ydir','reverse');
title ('Before Bandpass Filter')
legend('Raw')
ylabel('Time (s)')
xlabel('Offset (m)')
hold on
axis([min(data(:,1)+300*1) max(data(:,i)+300*i) min(t) max(t)])
end

% Bandpass filter dan plotting hasil filter


for i = 1:N
y = data(:,i);
Fs = 250; %Frekuensi Sampling
[b,a] = butter(2,[m n]/(Fs/2)); %Bandpass dengan Fungsi Butter
yabp = filter(b,a,y);%Mendefinisikan Bandpass yang akan Ditampilkan
subplot(1,2,2)
plot(yabp+300*i,t,'k')%Plot Bandpass Filter
set(gca,'Ydir','reverse');
legend('band')
title ('After Bandpass Filter')
legend('Bandpass')
ylabel ('Time (s)')
xlabel ('Offset (m)')
hold on
axis([min(yabp+300*1) max(yabp+300*i) min(t) max(t)])
end

4.Membuat model sintetik untuk model


pembajian.
% Copyright: 2018 - Teknik Geofisika, Universitas Pertamina
% URL: https://sites.google.com/site/metkomup/programming
% Cite: Anugerah, Nisfu; Ginting, Gamaliel Rhema; Wicaksono, Gigih Aji; Salsabila, Alda;
% Subakti, Puguh Ari; Syahputra, Loris Alif (2018): Membuat Model Sintetik untuk Model
Pembajian.
% figshare. https://doi.org/10.6084/m9.figshare.5946691.v1
% Ricker Wavelet
dt = 0.004;
f = 15;
phi = 3.14;
t0 = 0;
t = [-16:dt:16];
r = (1-2*(phi*f*dt.*(t-t0)).^2)./exp((phi*f*dt.*(t-t0)).^2);
y = decimate(r,120);
% Plotting Hasil Convolution Hasil Membaji
figure(1)
plot(y)
title('Wavelet');
for i = 1:5:1000
c = 1:315;
ff = 1:249;
b = conv(Reflect(:,i),y);
amax(i) = max(b);
figure(1)
plot(10*b+(i*0.25),c);
figure(1)
hold on
title('Wedge Model f=15Hz')
set(gca,'ydir','reverse')
axis([100 250 0 250])
end
% Tunning Thickness
figure(2)
for i = 1:5:1000
plot(i/4,amax(i),'*r');hold on
axis([100 250 0 0.6])
end

5. First break picking data seismik.


% Copyright: 2018 - Teknik Geofisika, Universitas Pertamina
% URL: https://sites.google.com/site/metkomup/programming
% Cite: Yasir, Moh.; Haq, M. Syauqil; Lase, Fanzly Togap Zisochi;
% Sena, Ariestian; Ilmi, M. Wildi Nurul; Sestha, Andrata Ganesha (2018):
% First Break Picking Data Seismik Refraksi. figshare.
% https://doi.org/10.6084/m9.figshare.5946697.v1
clear all; close all; clc;
data = ReadSegy ('Bla-bla.sgy');
time = [0:500]*0.0004;
q1 = input ('Batas bawah trace: ');
q2 = input ('Batas atas trace: '):
p = input ('Masukkan banyaknya trace tiap figure: ');
a = q1-1; % untuk menyimpan di .txt
b = q1-a; % untuk menyimpan di .txt
wf = 0; % untuk menyimpan di .txt
qq = (q2-q1)+1; % Banyak trace
n = 1; np = qq/p;
% Masukkan tempat penyimpanan setiap run
xA = zeros(qq,1);tA = zeros(qq,1);
m = 0;
while (n<=np)
iper = (n-1)*p+q1;
iked = iper+p-1; % Bergantung dengan iper
m = m+1;

figure (m)
for i = iper:iked
plot (data(:,i)+2000*i,time,'m');
set (gca,'Ydir','reverse')
hold on;
end
%Picking
[xq,tq] = ginput (p);
wi = b+wf;
wf = wi+p-1;
xA(wi:wf) = xq;
tA(wi:wf) = tq;
n = n+1;
%Gambar bulet
m = m+1;
figure (m)
plot(xq,tq,'ro');
end
% Simpan data picking
datapick = [xA,tA];
save('datapick.txt','datapick','-ascii');
% Gambar Total
figure (m+1)
plot(xA,tA,'ro');
xlabel('\bf\fontsize{12}\fontname{Consolase}Length (m)');
ylabel('\bf\fontsize{12}\fontname{Consolase}Length (m)');
set(gca,'Ydir','reverse')
title('\bf\fontsize{15}\fontname{Consolase}Data Refraksi Seismik');

6.Mencari kecepatan dan kedalaman dari data


seismik refraksi.
% Copyright: 2018 - Teknik Geofisika, Universitas Pertamina
% URL: https://sites.google.com/site/metkomup/programming
% Cite: Wirantara, Putu Pasek; Nagara, Jeremy Adi Padma; Purwakusuma, Rachenda
Pandu;
% Rahmah, Tazkia; Christofel, David (2018): Mencari Kecepatan dan Kedalaman
Gelombang Seismik Refraksi. figshare.
% https://doi.org/10.6084/m9.figshare.5946700.v1
clear; close; clc;
% load data
data = ReadSegy('Bla-bla.sgy');
time = [0:500]*0.004;
figure(1)
for i = 560:700
plot(data(:,i)+500*i,time,'m');
set(gca,'Ydir','reverse')
hold on;
end
axis([280000 330000 0 1.2]);
ylabel('\bf \fontsize{12}\fontname{Consolas}Time (s)');
xlabel('\bf \fontsize{12}\fontname{Consolas}Length (m)');
title('\bf \fontsize{15}\fontname{Consolas}Data Refraksi Seismik');
% first break picking
[xq,tq] = ginput(4);
hold on
plot(xq,tq,'-b')
figure(2)
plot((xq-280000)/10,tq,'bo');hold on
plot((xq-280000)/10,tq,'-b');
ylabel('\bf \fontsize{12}\fontname{Consolas}Time (s)');
xlabel('\bf \fontsize{12}\fontname{Consolas}Offset (m)');
title('\bf \fontsize{15}\fontname{Consolas}Data Refraksi Seismik');
% calculating velocity
datapick = [xq tq];
a = datapick;
figure(1)
x = a(1:2,1);
y = a(1:2,2);
plot(x,y);
m1 = (y(2)-y(1))/(x(2)-x(1));
Velocity1 = 1/m1
figure(2)
A = a(2:3,1);
B = a(2:3,2);
plot(A,B);
m2 = (B(2)-B(1))/(A(2)-A(1));
Velocity2 = 1/m2
figure(3)
C = a(3:4,1);
D = a(3:4,2);
plot(C,D);
m3 = (D(2)-D(1))/(C(2)-C(1));
Velocity3 = 1/m3
% Estimating the depth
n = load('datavelocitydantime.txt');
x = n(1:3,1);
y = n(1:3,2);
b = x(1)*y(2)*y(1);
c = y(2)^2;
d = y(1)^2;
e = sqrt(c-d);
f = 2*e;
g = y(3)^2;
h = sqrt(g-d);
i = y(3)*y(1);
j = y(3)*y(2);
k = sqrt(g-c);
l = 2*(b/f)*h;
m = 2*k;
D1 = b/f
D2 = (x(2)-(l/i))*(j/m)+D1

7. Forward modeling metode gravitasi.


% Copyright: 2018 - Teknik Geofisika, Universitas Pertamina
% URL: https://sites.google.com/site/metkomup/programming
% Cite: Umboh, Eureca B. G.; Mardhotilla, Andi; Faturahman, Rifki; Sulaiman, Muh. Iqbal;
% Logis, Abdan Aulia; Al-Baany, M. Fauzan (2018): Forward Modeling Metode Gravity.
figshare.
% https://doi.org/10.6084/m9.figshare.5946706.v1
clear; close; clc;
%--- Parameter Model (rho)
rho = 1; % Perbedaan densitas (kg/m^3)
%--- Konstanta
z1 = 50; % Kedalaman plat dalam (m)
z2 = 150; % Kedalaman plat dangkal
x0 = 100; % Letak patahan (m)
t = 40; % Tebal patahan (m)
cGrav = 6.674e-11; % Konstanta Gravitasi (m^3 kg^-1 s^-2)
si2mg = 1e5; % 1 SI (ms^-2) = 1e5 mGal
%--- Lokasi Pengukuran
x = -500:20:500;
%%--- FORMULA FORWARD SPHERE
k = 2*cGrav*rho*t;
for i = 1:length(x)
dg(i) = k*(pi+(atan((x(i)-x0)/z1))-(atan((x(i)-x0)/z2))); %ms^2
end
%--- Forward modeling
dg = dg*si2mg; %1 SI = 1e5 mGal
%%--------- PLOT FORWARD ---------%%
figure(1)
subplot(2,1,1)
plot(x,dg,'.','color','m','MarkerSize',15);
xlim([min(x) max(x)]);
xlabel('\bf \fontsize{12}\fontname{Times}Position (m)');
ylabel('\bf \fontsize{12}\fontname{Times}\Delta g (mGal)');
title('\bf \fontsize{14}\fontname{Times}Modeling Gravity - Fault');
% Gambar patahan
subplot(2,1,2)
% Zona 1
left = x(1);
right = x0;
top = -z2;
bottom= top-t;
xx = [left left right right];
yy = [bottom top top bottom];
fill(xx,yy,'m');
hold on
% Zona 2
left_2 = x0;
right_2 = x(length(x));
top_2 = -z1;
bottom_2= top_2-t;
xx = [left_2 left_2 right_2 right_2];
yy = [bottom_2 top_2 top_2 bottom_2];
fill(xx,yy,'m');
xlim([min(x) max(x)]);
title(['\bf \fontsize{12} \fontname{Times}Model => ','\rho = ', ...
num2str(rho),' kg/m^3 ; z_1 = ',num2str(z1),...
' m ; z_2 = ',num2str(z2),' m ; t = ',num2str(t),' m ; x_0 = ',...
num2str(x0),' m']);
xlabel('\bf \fontsize{12}\fontname{Times}Position (m) ' );
ylabel('\bf \fontsize{12}\fontname{Times}Depth (m) ');
xlim([min(x) max(x)]);
axis equal;
% Copyright: 2018 - Teknik Geofisika, Universitas Pertamina
% URL: https://sites.google.com/site/metkomup/programming
% Cite: Umboh, Eureca B. G.; Mardhotilla, Andi; Faturahman, Rifki; Sulaiman, Muh. Iqbal;
% Logis, Abdan Aulia; Al-Baany, M. Fauzan (2018): Forward Modeling Metode Gravity.
figshare.
% https://doi.org/10.6084/m9.figshare.5946706.v1
clear; close; clc;
%--- Parameter Model (rho, R)
rho1 = 1;
rho2 = 1;% Perbedaan densitas (kg/m^3)
%--- Konstanta
x0 = 50;
m = 30;
z = 100;
cGrav = 6.674e-11; % Konstanta Gravitasi (m^3 kg^-1 s^-2)
si2mg = 1e5; % 1 SI (ms^-2) = 1e5 mGal
%--- Lokasi Pengukuran
x = 0:2:100;
%%--- FORMULA FORWARD SQUARE
k1 = cGrav*rho1;
for i = 1:length(x)
a = (m/2)+(x(i)-x0); % Jarak Ke P(x,0)
b = (x(i)-x0)-(m/2);
dg1(i) = k1*(a*log((a^2+z^2)/a^2)-(b*log((b^2+z^2)/b^2))+((2*z)*(atan(a/z)-
atan(b/z))));
end
k2 = cGrav*rho2;
for i = 1:length(x)
a2 = (m/2)+(x(i)-x0); % Jarak Ke P(x,0)
b2 = (x(i)-x0)-(m/2);
dg2(i) = k2*(a2*log((a2^2+z^2)/a2^2)-(b2*log((b2^2+z^2)/b2^2))+((2*z)*(atan(a2/z)-
atan(b2/z))));
end
%--- Forward modeling 1
dg1 = dg1*si2mg; %1 SI = 1e5 mGal
dg2 = dg2*si2mg; %1 SI = 1e5 mGal
x = [-z,(-z-20),(-z-20),-z];
y = [((x0/2)-(m/6)),((x0/2)-(m/6)),((x0/2)+(m/3)),((x0/2)+(m/3))];
x1 = [-z,(-z-20),(-z-20),-z];
y1 = [((x0/2)-(m/6)),((x0/2)-(m/6)),((x0/2)+(m/3)),((x0/2)+(m/3))];
figure(1)
subplot(3,1,1)
plot(dg1,'color','b')
hold on
subplot(3,1,1)
plot(dg2,'color','r')
xlabel('Posisi (m)')
ylabel('Delta g (mGal)')
title('Modeling Gravity - Intrusi')
hold off
subplot(3,1,2)
fill(y,x,'b')
xlim([0 60]);
ylim([-120 -50]);
xlabel('Posisi (m)')
ylabel('Kedalaman (m)')
subplot(3,1,3)
fill(y1,x1,'r')
xlim([0 60]);
ylim([-120 -50]);
xlabel('Posisi (m)')
ylabel('Kedalaman (m)')

8.Forward modeling metode gravitasi.


% Copyright: 2018 - Teknik Geofisika, Universitas Pertamina
% URL: https://sites.google.com/site/metkomup/programming
% Cite: Nugroho; Akbar, M. Taufiq; Erwin, Lutfi F.; Ismunanto, Fitrah Tedi; Almuhdar,
Jakfar Husin;
% Riandikha, Richo Oxa (2018): Forward Modeling Metode Magnetik. figshare.
https://doi.org/10.6084/m9.figshare.5946721.v1
clear; clc; close;
%Konstanta
k = 1; %kontras kemagnetan(Tkm/H)
To = 1; %intensitas magnet bumi
%Parameter yang ditentukan
a = 10; %sudut dip slip (0-90 derajat)
b = 45; %sudut inklinasi (0-90 derajat)
c = 45; %sudut strike azimuth (0-90 derajat)
x = -100:100; %rentang Pengamatan (km)
m = 20; %lebar lapisan (km)
Xo = 5; %lokasi objek
z = 10; %kedalaman (km)
%Rumus magnetik
Io = atand(b);
Q = Io-a;
P = (2*k*To*m*(1-(cosd(b))^2*(sind(c))^2)^0.5);
for i = 1:length(x)
M(i)=P*((x(i)-Xo)*sind(Q)+z*cosd(Q))/((x(i)-Xo)^2+z^2);
end
%Kurva medan magnetik
figure(1)
subplot(5,1,[1 2])
plot(x,M,'.','color','b','markersize',15);
xlim([min(x) max(x)]);
xlabel('\bf\fontsize{12}\fontname{times}posisi (km)');
ylabel('\bf\fontsize{12}\fontname{times}\delta B (nT)');
title('\bf\fontsize{12}\fontname{times}Modeling Magnetik-Dyke');
%Gambar objek dibawah tanah
X = [Xo+m/2,Xo+50/tand(a)+m/2,Xo+50/tand(a)-m/2,Xo-m/2];
Y = [z,z+50,z+50,z];
subplot(5,1,[4 5])
fill(X,Y,'b');
xlim([x(1) x(end)]);
ylim([0 (z+50)]);
set(gca,'ydir','reverse');
xlabel('\bf\fontsize{12}\fontname{times}posisi (km)');
ylabel('\bf\fontsize{12}\fontname{times}Kedalaman (km)');
title('\bf\fontsize{12}\fontname{times}Modeling Magnetik-Dyke');
% Copyright: 2018 - Teknik Geofisika, Universitas Pertamina
% URL: https://sites.google.com/site/metkomup/programming
% Cite: Nugroho; Akbar, M. Taufiq; Erwin, Lutfi F.; Ismunanto, Fitrah Tedi; Almuhdar,
Jakfar Husin;
% Riandikha, Richo Oxa (2018): Forward Modeling Metode Magnetik. figshare.
https://doi.org/10.6084/m9.figshare.5946721.v1
clear; clc; close;
%Konstanta
Uo = 1.26*10^3; % Permeabilitas magnet di ruang hampa (H/km)
phi = 3.14;
%Parameter yang ditentukan
Mz = 1; % kontras magnetisasi (TKm/H)
z1 = 2.5; % kedalaman terhadap sisi atas obyek (km)
z2 = 10; % kedalaman terhadap sisi bawah obyek (km)
x = -100:100; %rentang Pengamatan (km)
m = 25; %lebar lapisan (km)
Xo = 10; %lokasi objek (km)
%Rumus magnetik diberbagai titik
for i = 1:length(x)
a1 = atan((x(i)-Xo+m)/z1);
a2 = atan((x(i)-Xo-m)/z1);
a3 = atan((x(i)-Xo+m)/z2);
a4 = atan((x(i)-Xo-m)/z2);

Bz(i) = Uo*Mz*((a1-a2)-(a3-a4))/(2*phi);
end
%Kurva medan magnetik
figure(1)
subplot(5,1,[1 2])
plot(x,Bz,'.','color','b','markersize',15);
xlim([min(x) max(x)]);
xlabel('\bf\fontsize{12}\fontname{times}Posisi (km)');
ylabel('\bf\fontsize{12}\fontname{times}\delta B (nT)');
title('\bf\fontsize{12}\fontname{times}Modeling Magnetik-Block');
%Gambar objek dibawah tanah
X = [Xo-m,Xo+m,Xo+m,Xo-m];
Y = [z1,z1,z2,z2];
subplot(5,1,[4 5])
fill(X,Y,'b');
xlim([x(1) x(end)]);
ylim([0 30]);
set(gca,'ydir','reverse');
xlabel('\bf\fontsize{12}\fontname{times}Posisi (km)');
ylabel('\bf\fontsize{12}\fontname{times}Kedalaman (km)');
title('\bf\fontsize{12}\fontname{times}Modeling Magnetik-Block');

9.Forward modeling metode SP.


% Copyright: 2018 - Teknik Geofisika, Universitas Pertamina
% URL: https://sites.google.com/site/metkomup/programming
% Cite: Wijaya, Darmawangsa; Kuncoro, Trio Adi; Hariyanto, Ucok Jhonatan; Pratama,
Francisco Surya;
% Pangaribuan, Aulia Rahman (2018): Forward Modeling Metode Self Potensial. figshare.
% https://doi.org/10.6084/m9.figshare.5946724.v1
clear; close; clc;
%Konstanta
K = -600;
z = 20;
x0 = 0;
teta = 40;
%Lokasi Pengukuran
x = -100:10:100;
%%----------- FORMULA FORWARD BALL ---------%%
for i = 1:length (x)
V(i) = ((x(i)-x0)*cosd(teta)+ z*sind(teta))/(((x(i)-x0)^2+z^2)^1.5);
end
dy=K*V;
%%--------- PLOT FORWARD --------%%
figure(1)
subplot (5,1,[1 2])
plot(x,dy,'.','color','r','Markersize',15);
xlim([min(x) max(x)]);
xlabel('\bf \fontsize{12}\fontname{Times}Position (m)');
ylabel('\bf \fontsize{12}\fontname{Times}\Delta g (mGal)');
title('\bf \fontsize{14}\fontname{Times}Modeling SP - Sphere');
subplot(5,1,[4 5])
% Gambar Bola
th = 0:pi/50:2*pi;
R = 10;
xunit = R*cos(th)+x0;
yunit = R*sin(th)+z;
fill(xunit,yunit,'r');
set(gca,'ydir','reverse');
axis([min(x) max(x) 0 50]);
title([ ' \bf \fontsize{14} \fontname{Times}Model => ' , ' K = ' , ...
num2str(K), ' kg/m^3 ; R = ' ,num2str(R), ...
' m ; z = ' ,num2str(z), ' m ; x_0 = ' ,num2str(x0), ' m' ]);
xlabel(' \bf \fontsize{12} \fontname{Times}Position (m)' );
ylabel(' \bf \fontsize{12} \fontname{Times}Depth (m)' );
%axis equal;

% Copyright: 2018 - Teknik Geofisika, Universitas Pertamina


% URL: https://sites.google.com/site/metkomup/programming
% Cite: Wijaya, Darmawangsa; Kuncoro, Trio Adi; Hariyanto, Ucok Jhonatan; Pratama,
Francisco Surya;
% Pangaribuan, Aulia Rahman (2018): Forward Modeling Metode Self Potensial. figshare.
% https://doi.org/10.6084/m9.figshare.5946724.v1
clear; close; clc;
%Konstanta
K = -600;
z = 20;
x0 = 0;
teta = 40;
%Lokasi Pengukuran
x = -100:10:100;
%%----------- Formula Forward Cylinder ---------%%
for i = 1:length (x)
V(i) = ((x(i)-x0)*cosd(teta)+z*sind(teta))/(((x(i)-x0)^2+z^2));
end
dy = K*V;
%%--------- Plot Forward --------%%
figure(1)
subplot(5,1,[1 2])
plot(x,dy,'.','color','r','Markersize',15);
xlim([min(x) max(x)]);
xlabel('\bf \fontsize{12}\fontname{Times}Posisi (m)');
ylabel('\bf \fontsize{12}\fontname{Times}\Delta g (mGal)');
title('\bf \fontsize{14}\fontname{Times}Modeling SP - Silinder Horisontal');
subplot(5,1,[4 5])
% Gambar Silinder Horisontal
th = 0:pi/50:2*pi;
R = 10;
xunit = R*cos(th)+x0;
yunit = R*sin(th)+z;
fill(xunit,yunit,'r');
set(gca,'ydir','reverse');
axis([min(x) max(x) 0 50]);
title([ ' \bf \fontsize{14} \fontname{Times}Model => ' , ' K = ' , ...
num2str(K), ' kg/m^3 ; R = ' ,num2str(R), ...
' m ; z = ' ,num2str(z), ' m ; x_0 = ' ,num2str(x0), 'm' ]);
xlabel(' \bf \fontsize{12} \fontname{Times}Posisi (m)' );
ylabel(' \bf \fontsize{12} \fontname{Times}Kedalaman (m)' );

10. Forward modeling metode IP.


% Copyright: 2018 - Teknik Geofisika, Universitas Pertamina
% URL: https://sites.google.com/site/metkomup/programming
% Cite: Auly, Muh. Fariq Riesky; Van Dyka, Gerie; Zainal;
% Azhari, Farid (2018): Forward Modeling Metode Induced Polarization. figshare.
% https://doi.org/10.6084/m9.figshare.5946730.v1
clear; close; clc;
R = 18;
H = 24;
P = -30:1:30;
x0 = 0;
m1 = 1; m2 = 5;
m = m2-m1;
r = H/R;
%Iterasi untuk apparent chargeability
for i = 1:length(P)
xs = P(i)-x0;
q = xs/R;
F = (r*r-q*q)/((r*r+q*q)^2);
ma(i) = (m*F)/(2+m*(F-1));
end
subplot(5,1,[1 2]) %Ploting kurva apparent chargeability
plot(P,ma,'-','color','b','MarkerSize',15);
xlim([min(P) max(P)]);
xlabel('\bf \fontsize{12}\fontname{Times}Position (m)');
ylabel('\bf \fontsize{12}\fontname{Times}Apparent Chargeability (%)');
title('\bf \fontsize{15}\fontname{Times}Modelling IP - Horizontal Cylinder');
subplot(5,1,[4 5]) %Ploting kurva model silinder horizontal
th = 0:pi/50:2*pi;
xunit = R*cos(th)+x0;
yunit = R*sin(th)+H;
fill(xunit,yunit,'b');
xlim([x0-r-100 x0+r+100]);
set(gca,'ydir','reverse');
axis equal
xlabel('\bf \fontsize{12}\fontname{Times}Position (m)');
ylabel('\bf \fontsize{12}\fontname{Times}Depth (m)');

11. Analisa spline berbasis graphical user


interface (GUI).
% Copyright: 2018 - Teknik Geofisika, Universitas Pertamina
% URL: https://sites.google.com/site/metkomup/programming
% Cite: Suryahadinata, Ketut T.; Ardiyanto, Dimas; Rustianto, Raffly; Baihaqi, Reyhan;
% Janapriyandana, Shri I.; Lobo, Ryru K. (2018): Analisa Spline Berbasis Graphical User
Interface (GUI). figshare.
% https://doi.org/10.6084/m9.figshare.5946754
%FUNGSI YANG AUTOMATIS KELUAR SAAT MEMBUAT GUI
function varargout = ANALISISISISSPLINE(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @ANALISISISISSPLINE_OpeningFcn, ...
'gui_OutputFcn', @ANALISISISISSPLINE_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
function ANALISISISISSPLINE_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
function varargout = ANALISISISISSPLINE_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
%Browse File Pada Tombol [Input Data]
function pushbutton1_Callback(hObject, eventdata, handles)
filename= uigetfile({'*.txt'},'File Selector');
open = strcat(filename);
xy = load (open);
x=xy(:,1);
hold on
plot(x,'*b','LineWidth',1);
grid on
hold off
%Memasukan Jumlah Titik Spline 1
function edit1_Callback(hObject, eventdata, handles)
function edit1_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
%Plot Titik Spline 1
function pushbutton2_Callback(hObject, eventdata, handles)
global reset1;
hold on
n = str2double(get(handles.edit1,'String'));
[x1,y1]=ginput(n);
grid on
u = linspace(0,20,100);
v = spline(x1,y1,u);
has=[u',v'];
reset1 = plot(u,v,'r','LineWidth',1)
xlim([min(x1) max(x1)])
legend('Data','SPLINE','Location','NorthEast')
save ('HASILSPLINE1.txt', 'has','-ASCII')
hold off
guidata(hObject,handles);
%Memasukan Jumlah Titik Spline 2
function edit2_Callback(hObject, eventdata, handles)
function edit2_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
%Plot Titik Spline 2
function pushbutton3_Callback(hObject, eventdata, handles)
global reset2;
hold on
n = str2double(get(handles.edit2,'String'));
[x1,y1]=ginput(n);
grid on
u = linspace(0,20,100);
v = spline(x1,y1,u);
has=[u',v'];
reset2 = plot(u,v,'g','LineWidth',1)
xlim([min(x1) max(x1)])
legend('Data','Spline 1','Spline 2','Location','NorthEast')
save ('HASILSPLINE2.txt', 'has','-ASCII')
hold off
guidata(hObject,handles);
%Mereset Semua
function pushbutton4_Callback(hObject, eventdata, handles)
cla (handles.axes1,'reset');
%Mereset Spline 1
function pushbutton5_Callback(hObject, eventdata, handles)
global reset1;
delete(reset1);
guidata(hObject,handles);
%Mereset Spline 2
function pushbutton6_Callback(hObject, eventdata, handles)
global reset2;
delete(reset2);
guidata(hObject,handles);
12. Smoothing 1D dengan moving average.
% Copyright: 2018 - Teknik Geofisika, Universitas Pertamina
% URL: https://sites.google.com/site/metkomup/programming
% Cite: Pratama, Hadyan; Leonarado, Reyvo; Baihaqi; Putra, Reggy Caesar;
% Ibrahim, Ahmad Fajar; Maulud, Ilham (2018): Smoothing 1D dengan Moving Average.
figshare.
% https://doi.org/10.6084/m9.figshare.5946844.v1
clear; close; clc;
disp('***********************************************************')
disp('PROGRAM SMOOTHING DATA 1D DENGAN MOVING AVERAGE')
disp('By : Kelompok 9')
disp('***********************************************************')
%LOAD DATA
data = load ('rawdata.las');
GR = data(1:500,6);
%MEMILIH ORDE
n = input('Masukkan Jumlah Orde = ');
%MOVING AVERAGE DENGAN ORDE RANDOM
for i = 1:(length(GR)-n)
m = 0;
for k = i:n+i-1
cc = GR(k);
m = m+cc;
end
c(i) = m/n;
end
%MENYIMPAN HASIL MOVING AVERAGE KE .TXT
header1 = 'Raw Data';
header2 = 'Moving Average';
fid = fopen('Hasil.txt','w');
fprintf(fid, [ header1 ' ' header2 'r\n']);
fprintf(fid, '%f %f \n',GR,c);
fclose(fid);
%PLOTTING
subplot(2,1,1)
plot(GR)
grid on;
xlabel('GR (API)');
ylabel('TVD (m)');
subplot (2,1,2)
plot(c,'-','LineWidth',1)
hold on
plot(GR)
xlabel('GR (API)');
ylabel('TVD (m)');
legend('Moving Average','Raw Data')

13. Cropping dengan poligon.


% Copyright: 2018 - Teknik Geofisika, Universitas Pertamina
% URL: https://sites.google.com/site/metkomup/programming
% Cite: Purba, Christie A.; Sihotang, Suleman M.; Reynara, Rafael;
% Christianto, Laurensius C.; Akbar, Catur H. A.; Amir, Andi L. R. (2018): Cropping with
Polygon. figshare.
% https://doi.org/10.6084/m9.figshare.5946952.v1
clear; close; clc;
a = load('OUTPUT2.txt');
xq = a(:,1);yq = a(:,3);zq = a(:,2)
plot(xq,yq,'bo');
disp(' Cropping With Polygon ')
disp('=======================')

title('\bf \fontsize {14}\fontname{Times}PILIH TITIK UNTUK MENANDAI DAERAH DATA YANG


INGIN DI CROP','color','r')
xlabel('\bf \fontsize{12}\fontname{Times}X','color','r');
ylabel('\bf \fontsize{12}\fontname{Times}Y','color','r');

n = input(' Masukkan Jumlah Titik = ');


[xv,yv] = ginput(n)
plot(xv,yv)
set(gcf,'color','magenta')

hold on
[in, on] = inpolygon(xq, yq, xv, yv)
plot(xq(in), yq(in), 'ro')
set(gca,'Color','cyan')
hold off

A = xq(in);disp(A)
B = yq(in);disp(B)
C = zq(in)

%SIMPAN FILE
fileku = fopen('OutputCropping.txt','wt');
A = A;
B = B;
C = C;
LL = length(A)
FormSpec = '%.2f\t\t%.2f\t%.2f\n';

fprintf(fileku,'A\t\tB\tC\n');
for i = 1:LL
fprintf(fileku,FormSpec,A(i),B(i),C(i))
end
fclose(fileku);

14. SVD untuk matriks 5x5.


% Copyright: 2018 - Teknik Geofisika, Universitas Pertamina
% URL: https://sites.google.com/site/metkomup/programming
% Cite: Sihombing, Willi Leonardo; Pratama, Ratih N. A. C. Putri;
% Gaol, Yosua H. Lumban; Istiqomah; Sasti, Afif Fakhri;
% Haolia (2018): Singular Value Decomposition untuk Matriks 5x5. figshare.
% https://doi.org/10.6084/m9.figshare.5946976.v1
clear all;close all; clc;
disp('===============================')
disp('===========PROGRAM=============')
disp('=======SVD Matrix 5x5==========')
disp('===============================')
%Matrix A
A = [1 3 6 1 6; 6 9 2 2 3; 2 6 2 7 4; 7 4 0 4 0; 0 0 0 0 0];
B = 0.01.*A;
C = A*B;
[U,S,V] = svd(A);
for i = 1:5
for j = 1:5
if S(i,j)> 0.0001
So(i,j) = 1/S(i,j);
else
So(i,j) = 0;
end
end
end
Ai = V*So*U';
Bo = Ai*C;
G = B-Bo;
disp('Nilai dari Matrix A= '); disp (A);
disp('Nilai dari Matrix B= '); disp (B);
disp('Nilai dari Matrix Ainvers*C=(B) '); disp (Bo);
disp('Nilai dari Galat Matrix B= '); disp (G);
disp('Nilai dari Matrix C= '); disp (C);
disp('Nilai dari U= '); disp (U);
disp('Nilai dari Eigen Value= '); disp (S);
disp('Nilai dari Eigen Vector= '); disp (V);
disp('Nilai dari Matrix Ainvers= '); disp (Ai);

%Matrix 100
n1 = 100;
h = waitbar(0,'Travel Time N-1, Please wait...');
steps = n1;
for step = 1:steps
% computations take place here
waitbar(step/steps)
end
close(h)
t = cputime;
B1 = magic (n1);
A1 = 0.01.*B1;
C1 = A1*B1;
[U,S,V] = svd(A1);
%Hitung B~V*So*U'
for i = 1:n1
for j = 1:n1
if S(i,j)> 0.0001
So(i,j) = 1/S(i,j);
else
So(i,j) = 0;
end
end
end
A1 = V*So*U';
Bc = A1*C1;
elapsedtime1 = cputime-t;

%Matrix 200
n2 = 200;
h = waitbar(0,'Travel Time N-2, Please wait...');
steps = n2;
for step = 1:steps
% computations take place here
waitbar(step/steps)
end
close(h)
t = cputime;
B2 = magic (n2);
A2 = 0.01.*B2;
C2 = A2*B2;
[U,S,V] = svd(A2);
%Hitung B~V*So*U'
for i = 1:n2
for j = 1:n2
if S(i,j)> 0.0001
So(i,j) = 1/S(i,j);
else
So(i,j) = 0;
end
end
end
A2 = V*So*U';
B2 = A2*C2;
elapsedtime2 = cputime-t;

%Matrix 300
n3 = 300;
h = waitbar(0,'Travel Time N-3, Please wait...');
steps = n3;
for step = 1:steps
% computations take place here
waitbar(step/steps)
end
close(h)
t = cputime;
B3 = magic (n3);
A3 = 0.01.*B3;
C3 = A3*B3;
[U,S,V] = svd(A3);
%Hitung B~V*So*U'

for i = 1:n3
for j = 1:n3
if S(i,j)> 0.0001
So(i,j) = 1/S(i,j);
else
So(i,j) = 0;
end
end
end
A3 = V*So*U';
B3 = A3*C3;
elapsedtime3 = cputime-t;

%Matrix 400
n4 = 400;
h = waitbar(0,'Travel Time N-4, Please wait...');
steps = n4;
for step = 1:steps
% computations take place here
waitbar(step/steps)
end
close(h)
t = cputime;
B4 = magic (n4);
A4 = 0.01.*B4;
C4 = A4*B4;
[U,S,V] = svd(A4);
%Hitung B~V*So*U'
for i = 1:n4
for j = 1:n4
if S(i,j)> 0.0001
So(i,j) = 1/S(i,j);
else
So(i,j) = 0;
end
end
end
A4 = V*So*U';
B4 = A4*C4;
elapsedtime4 = cputime-t;

%Matrix 500
n5 = 500;
h = waitbar(0,'Travel Time N-5, Please wait...');
steps = n5;
for step = 1:steps
% computations take place here
waitbar(step/steps)
end
close(h)

t = cputime;
B5 = magic (n5);
A5 = 0.01.*B5;
C5 = A5*B5;
[U,S,V] = svd(A5);

%Hitung B~V*So*U'
for i = 1:n5
for j = 1:n5
if S(i,j)> 0.0001
So(i,j) = 1/S(i,j);
else
So(i,j) = 0;
end
end
end
A5 = V*So*U';
B5 = A5*C5;
elapsedtime5 = cputime-t;

%Matrix 600
n6 = 600;
h = waitbar(0,'Travel Time N-6, Please wait...');
steps = n6;
for step = 1:steps
% computations take place here
waitbar(step/steps)
end
close(h)

t = cputime;
B6 = magic (n6);
A6 = 0.01.*B6;
C6 = A6*B6;
[U,S,V] = svd(A6);

%Hitung B~V*So*U'
for i = 1:n6
for j = 1:n6
if S(i,j)> 0.0001
So(i,j) = 1/S(i,j);
else
So(i,j) = 0;
end
end
end
A6 = V*So*U';
B6 = A6*C6;
elapsedtime6 = cputime-t;

%Matrix 700
n7 = 700;
h = waitbar(0,'Travel Time N-7, Please wait...');
steps = n7;
for step = 1:steps
% computations take place here
waitbar(step/steps)
end
close (h)

t = cputime;
B7 = magic (n7);
A7 = 0.01.*B7;
C7 = A7*B7;
[U,S,V] = svd(A7);
%Hitung B~V*So*U'
for i = 1:n7
for j = 1:n7
if S(i,j)> 0.0001
So(i,j) = 1/S(i,j);
else
So(i,j) = 0;
end
end
end
A7 = V*So*U';
B7 = A7*C7;
elapsedtime7 = cputime-t;

%Matrix 800
n8 = 800;
h = waitbar(0,'Travel Time N-8, Please wait...');
steps = n8;
for step = 1:steps
% computations take place here
waitbar(step/steps)
end
close (h)

t = cputime;
B8 = magic (n8);
A8 = 0.01.*B8;
C8 = A8*B8;
[U,S,V] = svd(A8);
%Hitung B~V*So*U'
for i = 1:n8
for j = 1:n8
if S(i,j)> 0.0001
So(i,j) = 1/S(i,j);
else
So(i,j) = 0;
end
end
end
A8 = V*So*U';
B8 = A8*C8;
elapsedtime8 = cputime-t;

%Matrix 900
n9 = 900;
h = waitbar(0,'Travel Time N-9, Please wait...');
steps = n9;
for step = 1:steps
% computations take place here
waitbar(step/steps)
end
close(h)

t = cputime;
B9 = magic (n9);
A9 = 0.01.*B9;
C9 = A9*B9;
[U,S,V] = svd(A9);

%Hitung B~V*So*U'
for i = 1:n9
for j = 1:n9
if S(i,j)> 0.0001
So(i,j) = 1/S(i,j);
else
So(i,j) = 0;
end
end
end
A9 = V*So*U';
B9 = A9*C9;
elapsedtime9 = cputime-t;

%Matrix 1000
n10 = 1000;
h = waitbar(0,'Travel Time N-10, Please wait...');
steps = n10;
for step = 1:steps
% computations take place here
waitbar(step/steps)
end
close(h)

t = cputime;
B10 = magic (n10);
A10 = 0.01.*B10;
C10 = A10*B10;
[U,S,V] = svd(A10);

%Hitung B~V*So*U'
for i = 1:n10
for j = 1:n10
if S(i,j)> 0.0001
So(i,j) = 1/S(i,j);
else
So(i,j) = 0;
end
end
end
A10 = V*So*U';
B10 = A10*C10;
elapsedtime10 = cputime-t;

%Penutup
disp('===================================')
disp('========Nilai Travel Time==========')
disp('====Sudah Disimpan Dalam Folder====')
disp('===================================')

%Figure Kurva
y = [0
elapsedtime1,elapsedtime2,elapsedtime3,elapsedtime4,elapsedtime5,elapsedtime6,elapsedtime
7,elapsedtime8,elapsedtime9,elapsedtime10];
x = [0 n1 n2 n3 n4 n5 n6 n7 n8 n9 n10];
plot (x,y,'--b*','LineWidth',1.5)
legend ('Travel Time')
title('\bf \fontsize {14}\fontname{times}Grafik Travel Time Menurut banyaknya
data','color','m')
xlabel('\bf \fontsize{12}\fontname{times}Banyak Data','color','c');
ylabel('\bf \fontsize{12}\fontname{times}Waktu (s)','color','r');
grid on

%Print Hasil Kurva


elacme = fopen('Hasil Kurva Travel Time.txt','w');

fprintf(elacme,'<<=============================================>>\n');
fprintf(elacme,'<<===============DATA TRAVEL TIME==============>>\n');
fprintf(elacme,'<<=============================================>>\n\n');
fprintf(elacme,'<<========================================>>\n');
fprintf(elacme,['Travel Time N ke 1=',num2str(elapsedtime1),'\tSec\n']);
fprintf(elacme,['Travel Time N ke 2=',num2str(elapsedtime2),'\tSec\n']);
fprintf(elacme,['Travel Time N ke 3=',num2str(elapsedtime3),'\tSec\n']);
fprintf(elacme,['Travel Time N ke 4=',num2str(elapsedtime4),'\tSec\n']);
fprintf(elacme,['Travel Time N ke 5=',num2str(elapsedtime5),'\tSec\n']);
fprintf(elacme,['Travel Time N ke 6=',num2str(elapsedtime6),'\tSec\n']);
fprintf(elacme,['Travel Time N ke 7=',num2str(elapsedtime7),'\tSec\n']);
fprintf(elacme,['Travel Time N ke 8=',num2str(elapsedtime8),'\tSec\n']);
fprintf(elacme,['Travel Time N ke 9=',num2str(elapsedtime9),'\tSec\n']);
fprintf(elacme,['Travel Time N ke 10=',num2str(elapsedtime10),'\tSec\n']);
fprintf(elacme,'<<========================================>>\n\n');

15. Konversi data biner 32 bit menjadi desimal


dengan menggunakan format IBM dan IEEE.
% Copyright: 2018 - Teknik Geofisika, Universitas Pertamina
% URL: https://sites.google.com/site/metkomup/programming
% Cite:
clear; clc;
x = input('masukkan nilai biner (32) = ');
% example
% x = [0 1 0 0 0 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 1 0 1 0 0 0 1 0 1 0 1];
d1 = x(1);
sign = (-1)^(d1);
m = 0;
k = 0;
a = -1;
l = 0;
disp('1. IBM')
disp('2. IEEE')
n = input('Masukkan pilihan konversi: ')
if n == 1
for i = 8:-1:2;
k = k+(x(i)*(2^(m)));
m = m+1;
end
for j = 9:32
l = l+(x(j)*(2^(a)));
a = a-1;
end
%% IBM
IBM = sign*l*16^(k-64)

elseif n == 2
for i = 9:-1:2;
k = k+(x(i)*(2^(m)));
m = m+1;
end
for j = 10:32
l = l+(x(j)*(2^(a)));
a = a-1;
end
%% IEEE
IEEE = -1^sign*(1+l)*2^(k-127)

else
disp('Nilai yang anda masukkan salah')
end

You might also like