### Unformatted Attachment Preview

Assignment 1
A Submarine Problem
DUE: Wednesday, January 27, 2021 at 11:59 pm PST
Late assignments will NOT be accepted
Professor: Jason J. Bramburger
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 recoding 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 CANVAS and download: subdata.mat. This contains 49
columns of data for measurements over a 24-hour span at half-hour increments in time.
You are being asked to perform the following:
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 of the submarine once you have it.
3. Where should you send your P-8 Poseidon subtracking aircraft? Give the x and y coordinates in a table to
follow the submarine.
Good luck, and I hope you track the submarine!
The following MATLAB 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 image before plotting a new one.)
1
2
% Clean workspace
clear all; close all; clc
3
4
load subdata.mat % Imports the data as the 262144x49 (space by time) matrix called subdata
5
6
7
8
9
L = 10; % spatial domain
n = 64; % Fourier modes
x2 = linspace(-L,L,n+1); x = x2(1:n); y =x; z = x;
k = (2*pi/(2*L))*[0:(n/2 - 1) -n/2:-1]; ks = fftshift(k);
10
11
12
[X,Y,Z]=meshgrid(x,y,z);
[Kx,Ky,Kz]=meshgrid(ks,ks,ks);
13
14
15
16
17
18
19
20
for j=1:49
Un(:,:,:)=reshape(subdata(:,j),n,n,n);
M = max(abs(Un),[],'all');
close all, isosurface(X,Y,Z,abs(Un)/M,0.7)
axis([-20 20 -20 20 -20 20]), grid on, drawnow
pause(1)
end
1
...