In [1]:
genrick <- function(duration, dt, f) {
# RICKER WAVELET GENERATOR
# Written by Leonard Lisapaly (leonardl@fisika.ui.ac.id)
# Converted to R by J Lees, 2004
#
# INPUTS
# freq = wavelet dominant frequency [Hz]
# dt = sampling interval [sec]
# nw = duration of wavelet [sec]
nw = duration / dt
a = f * sqrt(pi) / 2
nc = (nw + 1) / 2
tc = (nc - 1) * dt
t = seq(from=0, length=nw-1) * dt
b = pi * f * (t - tc)
w = a * (1 - 2*b^2) * exp(-b^2)
return(w)
}
In [2]:
imp <- matrix(rep(1, len=51), nrow = 51) * 2550 * 2650
# Impedance, imp: VP RHO
imp[c(10:15),] = 2700 * 2750
imp[c(15:27),] = 2400 * 2450
imp[c(27:35),] = 2800 * 3000
In [3]:
wavelet <- genrick(0.040, 0.001, 100)
In [4]:
matplot(wavelet)
In [5]:
# Python equivalents
# imp[1:] imp[:-1] imp[1:] imp[:-1]
m <- (tail(imp, -1) - head(imp, -1)) / (tail(imp, -1) + head(imp, -1))
In [6]:
x <- c(1, -1, 0, 0, 0, 0)
head(toeplitz(x), -1)
In [8]:
convmtx <- function(h, n) {
col_1 = np.r_[h[0], np.zeros(n-1)]
row_1 = np.r_[h, np.zeros(n-1)]
return(toeplitz(col_1, row_1))
}
In [ ]:
convmtx()
In [ ]:
In [44]:
# Or...
solve(A, b)
Out[44]:
In [43]:
A %*% x - b
Out[43]:
In [ ]: