|
XLSURFACE.OMS
Script File:
# XLSurface.oms
# Automation Server: Microsoft Excel
# Create a 2D FFT in O-Matrix and generate surface plot in Excel
#
local function create2DFFT() begin
# total time, g(t1, t2) is "small" for |(t1, t2)| > T / 2
T = 4.
N = 26
dt = T / N
df = 1 / T
t = (seq(N) - N / 2 - 1) * dt
alpha = 5.
h = exp( - alpha * abs(t))
g = fillcols(h, N) % fillrows(h', N)
# the continuous transform of g(t1, t2) is given by
# G(f1, f2) = H(f1) * H(f2)
# where H(f) = 2 * alpha / ((2 * PI * f)^2 + alpha^2)
# is the discrete transform of g
G = real(fft2d(complex(g))) * dt * dt
return G
end
# Transfer O-Matrix variable to Excel at the given range
local function putXLMat(matVar, range) begin
cowith("Range", range)
copropput("Value", matVar)
coendwith
end
# Create a new Chart sheet with Surface plot
local function xlpltSurface(matVar, rng) begin
cowith("ActiveSheet")
putXLMat( matVar, rng )
cowith("UsedRange")
coinvoke("Select")
coendwith
coendwith
cowith("Charts")
coinvoke("Add")
coendwith
cowith("ActiveChart")
copropput("ChartType", 83)
coendwith
end
# script entry point
cocreate("Excel.Application")
copropput("Visible", 1)
cowith("Workbooks")
coinvoke("Add")
coendwith()
rng = "A1:Z26"
G = create2DFFT()
xlpltSurface(G, rng)
Output:
|
|