AMATH 482 Homework 1: A submarine problem solved




5/5 - (5 votes)

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
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
4 load subdata.mat % Imports the data as the 262144×49 (space by time) matrix called subdata
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);
11 [X,Y,Z]=meshgrid(x,y,z);
12 [Kx,Ky,Kz]=meshgrid(ks,ks,ks);
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