documentation by Frank Bahr
Data Files in Matlab Format
This file describes the SeaSoar data files in matlab format
for the ArabSea cruises TN042, TN044, TN048, and TN051. They
are referred to as Arab1, Arab2, Arab3, and Arab4 in our own
terminology. The following examples use the Arab2 data. All
cruises follow the same format, but may differ in the number of
profiles corresponding to slightly different cruise lengths.
After loading the SeaSoar file arab2_profiles.mat, the following matrices
are placed in the work space:
fluor1 | 1062x88 | 747648 | double array |
fluor2 | 1062x88 | 747648 | double array |
o2 | 1062x88 | 747648 | double array |
p_flag | 1062x12 | 101952 | double array |
par | 1062x88 | 747648 | double array |
pres | 1062x88 | 747648 | double array |
sal | 1062x88 | 747648 | double array |
sigma | 1062x88 | 747648 | double array |
theta | 1062x88 | 747648 | double array |
txy | 1062x3 | 25488 | double array |
xmiss | 1062x88 | 747648 | double array |
z | 1x88 | 704 | double array |
In this example, we have 1062 average profiles of 88 depths each. The profiles
were derived by binning the original, processed SeaSoar data over four meters
in depth and fifteen minutes in time.
The variables are
fluor1: chlorophyll fluorescence,
fluor2: yellow matter fluorescence (Paula Coble),
o2: oxygen (Chris Langdon's o2 sensor),
p_flag: a quality flag,
par: PAR (photosynthetically active radiation),
pres: pressure,
sal: salinity,
sigma: potential density,
theta: potential temperature,
txy: [time, longitude, latitude]
txyz: [time, longitude, latitude, bottom depth]
xmiss: transmissometer
z: depth in meters
z gives the nominal depth of the profile bins, while pres
gives the actual mean pressure of all data in a particular time/depth bin.
All optical sensor data are reported in uncalibrated voltages.
Example Code
The following matlab code gives quick examples of how to plot the data.
1.) plot the cruise track
load primer3
plot(txy(:,2), txy(:,3),'.');
2.) plot a section
Specify a profile index range that identifies a section. One way
to do so is to plot latitude and longitude separately as function
of index number. Using with the zoom tool, the beginning and end
index of a section may be found easier in either the longitude or
the latitude series, depending upon the orientation of the section.
subplot(211)
plot(txy(:,2)); zoom on
plot(txy(:,2),'*'); zoom on
subplot(212)
plot(txy(:,3),'*'); zoom on
Looking at these plots, we identify the index range of the first
section of the first radiator as index 235 through 267.
nn=235:267;
Double-check that this index range is correct: plot the original cruise
track, and overplot the first section in a different color.
%plot a map of the complete cruise track, and of the section in question
figure(2)
plot(txy(:,2), txy(:,3),'.')
hold on
plot(txy(nn,2), txy(nn,3),'r.');
hold off
Now generate a color contour plot of temperature
figure(3)
pcolor(txy(nn,3),z,theta(nn,:)');axis('ij'); shading flat, colorbar
Clearly, selecting the right index range is the hardest part. For routine use, it
is more advantageous to identify all index ranges of interest and keep them in
a variable. For example, assume that start and end index of all sections of
interest are stored as the first and second column of the variable arab2_index.
A quick look at these sections can be obtained with the following loop:
for j=1:length(arab2_index);
figure(1)
plot(txy(:,2), txy(:,3),'.')
hold on
nn = primer3_index(j,2):arab2_index(j,3);
plot(txy(nn,2), txy(nn,3),'y.');
hold off
figure(2)
% leave x and y axes as indeces rather than lat or lon, for generality
pcolor(theta(nn,:)');axis('ij'); shading flat, colorbar
pause
end