(defun eg-0 () "
"
;; Initialize *array*
(loop for x below *array-length* do
(setf (aref *kernel* x) (+ (wave-3 x)
(cond ((< 100 x 300) (wave-1 x))
((< 3700 x 4000) (wave-2 x))
(t 0.0D0)))))
;; Set *kernel* to 200 entries of #'wav-1
(loop for x below *array-length* do
(setf (aref *array* x) (if (< x 200) (wave-1 x) 0.0D0)))
;; setf *convolution* the convolution of *array* and *kernel*
;; auto (autocorrelation) unused for now
(let ((farray (bordeaux-fft:sfft *array*))
(fkernel (bordeaux-fft:sfft *kernel*))
;; (auto (make-array 4096))
(fconv (make-array 4096)))
(loop for a across farray
for k across fkernel
for x from 0
do (setf (aref fconv x) (* a k))
;; do (setf (aref auto x) (* a a))
finally (loop for n from 0
for p across (bordeaux-fft:sifft fconv)
do (setf (aref *convolution* n) (abs p)))))
;;Write to a file, "to-graph.txt"
(with-open-file (out #p"to-graph.txt" :direction :output
:if-exists :supersede)
(loop for c across *convolution*
do (prin1 (abs c) out)
do (terpri out))))