with Signal Processing Toolbox™ or
with signal and statistics packages.
MATLAB®/Octave toolbox to apply underwater acoustic channels to a signal of your choice, or to unpack an underwater acoustic channel. To learn more about the channels, check out the documentation.
Please report bugs and suggest enhancements by creating a new issue. We welcome your comments. See CONTRIBUTING.md for more information.
This code repository contains the function replay
and noise generation function noisegen
in the src
folder. To replay your desired signal, download MAT-files from here, and store them in a folder where MATLAB®/Octave can find them.
To load the channel and noise MAT-files, and replay a signal of your choice through an underwater acoustic channel,
channel = load('blue_1.mat');
noise = load('blue_1_noise.mat');
y = replay(input, fs, array_index, channel);
w = noisegen(size(y), fs);
r = y + 0.05 * w;
In examples/example_replay.m
, the blue_1
channel is used. The blue_1.mat
contains the channel impulse responses, while the blue_1_noise.mat
contains the noise statistics extracted from the same recording. The script generates a single-carrier modulated BPSK signal consisting of n_repeat
repetitions of a pseudo-random sequence, passes the signal through the blue_1
channel, and adds blue_1
noise. Three plots are displayed: the received signal amplitude in time, the cross-correlation between the received signal and the transmitted signal, where n_repeat
peaks are visible, and the spectrum of the received signal. Multiple curves on each plot correspond to multiple receiving elements.
To unpack an underwater acoustic channel,
channel = load('blue_1.mat');
unpacked = unpack(fs_time, array_index, channel);
See examples/example_unpack.m
for details.
The license is available in the LICENSE file within this repository.
© 2025, Underwater Acoustic Channels Group.