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