## Description

You are hunting for a submarine in the Puget Sound using noisy acoustic data. It is a new submarine

technology that emits an unknown acoustic frequency that you need to detect. Using a broad spectrum

recording of acoustics, data is obtained over a 24-hour period in half-hour increments. Unfortunately, the

submarine is moving, so its location and path need to be determined.

Try to locate the submarine and find its trajectory using the acoustic signature. Also identify the acoustic

admissions of this new class of submarine. Go to the class webpage and download: subdata.mat or subdata.csv . This containes 49 columns of data for measurements over a 24-hour span at half-hour increments

in time.

1. Through averaging of the spectrum, determine the frequency signature (center frequency) generated by

the submarine.

2. Filter the data around the center frequency determined above in order to denoise the data and determine

the path of the submarine. (use plot3 to plot the path once you have it)

3. Where should you send your P-8 Orion sub-tracking aircraft (the x and y coordinates to follow the

submarine.

Good luck, and I hope you track that submarine.

The following code will help you get started in analyzing the data. It also tells you the spatial and spectral

resolution of your acoustic equipment. (NOTE: the reason for the close all command before isosurface is

that isosurface doesn’t seem to clear the previous imagine before plotting a new one)

1 % Clean workspace

2 clear all; close all; clc

3

4 load subdata.mat % Imports the data as the 262144×49 (space by time) matrix called subdata

5

6 L = 10; % spatial domain

7 n = 64; % Fourier modes

8 x2 = linspace(-L,L,n+1); x = x2(1:n); y =x; z = x;

9 k = (2*pi/(2*L))*[0:(n/2 – 1) -n/2:-1]; ks = fftshift(k);

10

11 [X,Y,Z]=meshgrid(x,y,z);

12 [Kx,Ky,Kz]=meshgrid(ks,ks,ks);

13

14 for j=1:49

15 Un(:,:,:)=reshape(subdata(:,j),n,n,n);

16 M = max(abs(Un),[],’all’);

17 close all, isosurface(X,Y,Z,abs(Un)/M,0.7)

18 axis([-20 20 -20 20 -20 20]), grid on, drawnow

19 pause(1)

20 end