Homework Set 10
Due 29 November 2000
Late homework will cost 15 points per week or part of a week it is late.
- Describe a method for predicting tides at a site 100 km offshore
of Australia on the continental shelf of the Timor Sea, in an area
a tide gauge was operated for a three-month period in the summer of
- You work for a engineering company that is designing a platform
that will operate for a ten-year period in the Timor Sea. You are asked:
What is the significant wave height and maximum wave height to be expected
while the platform is in operation? What information will you need to
answer the question, and where will you find the information?
- A 8.1 m/s trade wind generates a fully developed sea. Assume
the Pierson-Moskowitz spectrum describes the spectrum of these waves.
- What is the period of waves at the peak of the spectrum?
- What is the significant wave height of this trade-wind sea?
- What is the variance of surface displacement?
- A small coastal town in Scotland wishes to install a wave-powered
electrical generating station to provide power to the town. They know
the significant wave height offshore in deep water averages 2 meters,
and the typical wave period is 6 seconds. If 10% of the wave energy coming
ashore along 10 meters of the shore is converted to electricity, how
power is available to the town? Assume no wave energy is lost in the
zone and all power coming toward the shore from deep water reaches the
power station. Assume further that the wave energy is not refracted as
it propagates toward the shore.
- The site for the wave-powered electric generating station in
Scotland needs to be carefully considered. List two of the most important
environmental conditions that might influence the selection of a site,
and state why they are important.
Laboratory Assignment 10 Oceanography 608
The goal of this laboratory session is to learn more about ocean-wave
spectra. You will use as an example the spectrum of sea-surface elevation:
a wave-height spectrum. You can calculate
the spectrum using the data
in the file OCNG-608 Lab 10 using the application
on the Mac computer.
Matlab is a higher-level
programming language from The
MathWorks, Inc. for fast, efficient manipulation of matrices and
of data. It includes a special Signal-Processing
Toolbox for calculating, among many other functions, the spectrum
of a time series. The use of higher-level languages such as Matlab is
far more efficient than trying to calculate results using Fortran, C,
or other lower-level programming languages.
The lab was checked using Matlab version 4.2c.1 with the Signal Processing
Toolbox. Your results may be slightly different if you are using an different
version of Matlab.
To calculate the spectrum:
- Download wavefile.mat.
It is in binhex format. Unstuff the file, open the unstuffed file using
Matlab. The file is a MAT binary file that is machine independent. "MAT-files
can be transported between machines because they contain a machine signature
in the file header. Matlab checks the signature when it loads a file and,
if a signature indicates that a file is foreign, performs the necessary
conversion."-Matlab User's Guide. I also put a binary file wave.mat
on the server for PC users, or those who cannot unstuff a binhex file;
download the file directly to your hard drive, not to a browser page.
Change the name of the dataset by typing "sealevel=wavefile;" Be
sure to put the semicolon at the end of the command.
- Type "whos". This should return "sealevel 2047 by 2",
indicating the workspace contains the matrix sealevel, which has two
The first column is the time in seconds when sea-surface height was measured
by a wave recorder, the second is the height in centimeters at that
- Typing "sealevel(1:10,1)" prints
out the first ten values of
Q1: What is the time interval between samples?
Q2: What is the Nyquist frequency of the time series?
- Typing "plot(sealevel(1:400,2))" plots
the first 400 values
of wave height.
Q3: What is the approximate value of the significant-wave
Remember, height is the peak-to-trough distance.
- Typing "spec512=psd(sealevel(1:2048,2),512);" breaks the time
series into 512-point blocks, calculates the periodogram of each block,
averages the periodogram over 2048/512 = 4 blocks, and stores the result
in spec512. The spectral values are normalized by the frequency resolution
of the spectrum to produce a spectrum with units of cm2/Hz. This normalization
produces a spectrum that is independent of the spectral resolution, allowing
comparison of spectra made with different resolutions. Don't forget the
semicolon, leaving it out prints the results to the screen. If you left
it out, and Matlab starts filling the screen with numbers, typing "command
and period" at the same time interrupts the calculation.
Typing "loglog(spec512(1:128,1));" produces
a log-log plot of
the spectrum, but without proper scaling of the frequency
- Now let's calculate the significant wave height using both the
series and the spectrum.
Typing "std(sealevel(1:2028,2))" produces
the standard deviation
of sea-surface elevation.
Q4: What is the standard deviation
of sea-surface elevation? What
is the variance of sea-surface elevation? What is the significant
Type "delf=nyquist/256" but substitute
the value of the Nyquist
frequency that you calculated in Question 2 for nyquist.
(Don't type the
word nyquist.). This defines the frequency interval between
points in the spectrum.
Typing "delf*sum(spec512)/sqrt(2)" returns
two numbers, the first
is the variance of wave height. (The second is the sum
of the confidence intervals, and it does not concern us here.)
the spectrum should equal the variance of sea-surface elevation. It does
not exactly equal the variance of sea surface elevation
because Matlab applies a Hanning window to the data, giving
some data more
other data. This produces a better spectrum, but slightly changes the
Q5: What is the variance of sea
surface elevation calculated from
the spectrum? Is it the same as the variance calculated from
the array sealevel?
- We can produce more useful plots with a little more work: First
produce a nice log-log plot:
Calculate a frequency scale:
Type "freq=0:delf:nyquist;" (but
use your value of the Nyquist
frequency for nyquist) to calculate an array of 256 frequencies
in Hertz from 0 to the Nyquist frequency.
Now produce the plot:
Typing "loglog(freq(2:257),spec512(1:256,1));" produces
plot. The frequency starts at 2 to avoid plotting zero
frequency on a log-log plot.
If the log scale has several decades per tick, try typing "axis([0.01
1 0.001 100000])" to make a more useful plot.
We can also produce a linear plot:
Typing "plot(freq(2:128),spec512(1:127,1));" produces
plot that ignores the very small values at the higher frequencies.
Q6: What is the frequency at the peak of the spectrum?
Q7: What is the period of waves with this frequency?
- The waves you have worked with were produced by a very uniform
wind of 8.1 m/s blowing over a distance of thousands of kilometers.
Q8: How does the variance of wave height calculated above compare
that calculated using the Pierson-Moskowitz form of the
spectrum for the
same wind speed?
Q9: How does the frequency at the peak in the spectrum you calculated
compare with the frequency of the peak in the Pierson-Moskowitz
These exercises have introduced you to some simplified concepts of spectra,
hiding most of the mathematics. You may wish to read all of Chapter 11
Oppenheim & Schafer plus the Matlab handbooks to learn more about the
details of the calculations. Feel free to copy the data file so you can
practice working with spectra. Try modifying the commands above to produce
spectra with more and with less resolution and compare the spectra.
I have put some information about the Matlab Signal Processing and copies
of some pages from Chapter 11 of Oppenheim and Schafer in the red binder
next to the power Mac.
Oppenheim, A.V. & Schafer, R.W. 1975 Digital
Prentice Hall: 585 pp.
5 September, 2004