LESSON QUESTIONS: Rates of change
FOCUS QUESTION: How can I characterize rates of change?
Contents
 EXAMPLE 1: Load the fetal size data
 EXAMPLE 2: Merge the time and weight (mass) variables from the two data sets
 EXAMPLE 3: Calculate the weekly rate of change of fetal weight
 EXAMPLE 4: Plot the weight and rate of change of weight
 EXAMPLE 5: Calculate rate of change (slope) of fetal length in inches per week
 EXAMPLE 6: Find the midpoints of the weeks intervals for plotting
 EXAMPLE 7: Plot the weekly rate of change of fetal length in inches/week
 EXAMPLE 8: Calculate the percentage change in fetal weight
 EXAMPLE 9: Calculate the percentage change in fetal weight
EXAMPLE 1: Load the fetal size data
load toRump.txt; load toHeel.txt;
EXAMPLE 2: Merge the time and weight (mass) variables from the two data sets
weeks = [toRump(:, 1); toHeel(2:end, 1)]; mass = [toRump(:, 3); toHeel(2:end, 3)]; weight = mass .* 0.00220462262;
Questions  Answers 
What does end mean? 
The end identifier names the last element along a
dimension of an array.

If x is a vector, what does x(2:end)
mean? 
This expression is a vector with the same elements as those in
x except that the first element has been omitted.

Why do we omit the first row of toHeel
in forming weeks ? 
Both toRump and toHeel have a row
corresponding to week 20.

EXAMPLE 3: Calculate the weekly rate of change of fetal weight
poundsPerWeek = diff(weight) ./ diff(weeks); weekMid = (weeks(1:(end1)) + weeks(2:end))./2;
Questions  Answers 
What does the diff function do? 
The diff function calculates the difference between
adjacent values in an array. (See the handout on the diff
function for more details.)

What does the variable poundsPerWeek
correspond to? 
The variable poundsPerWeek contains
a numerical estimate of the slope of fetal weight as a function of
gestational week. Since gestational week is a time variable, you can
also interpret it as the weekly fetal growth rate.

If x is a vector, how many elements does
diff(x) have? 
The result of diff(x) has one fewer value than
x does. (Think of the values of x as
being fence posts and the differences corresponding to the spaces
between them. There is one fewer space than post.)

How big is weeks(1:(end1)) ? 
The weeks variable contains a vector with 36 rows.
the result of weeks(1:(end1)) is a vector containing
the first 35 rows of weeks .

What is the first element of the vector
weeks(2:end) ? 
The expression weeks(2:end) is a vector with
the same values as weeks starting with the second
element of weeks . Therefore, its first element has
the value weeks(2) .

Why does weekMid contain a vector
containing locations halfway between the values in weeks ?

The two vectors weeks(1:(end1)) and
weeks(2:end)) each contain one less element than the
vector weeks . The first element of
weeks(1:(end1)) is weeks(1) , while the
first element of weeks(2:end) is weeks(2) .
The expression adds the two vectors and divides by 2. The first element
of this evaluation is just (weeks(1) + weeks(2))/2 .

EXAMPLE 4: Plot the weight and rate of change of weight
figure('Color', [1, 1, 1]) ax = plotyy(weeks, weight, weekMid, poundsPerWeek); xlabel(ax(1), 'Weeks') ylabel(ax(1), 'Fetal weight (lbs)') ylabel(ax(2), 'Fetal growth rate (lbs/wk)') title('Characterization of fetal weight during pregnancy')
Questions  Answers 
Why did we plot poundsPerWeek
versus the weekly midpoints rather than the weeks themselves?
 The rate of change or slope is a relationship between pairs of points, and there is one fewer slope value than points on the curve. It makes sense to plot the slopes versus points halfway between these rather than associating the slopes with the smallest end or the largest end. 
What is the relationship between the blue curve and the green curve?  The green curve is the slope of the blue curve. 
When is the slope 0?  The slope is 0 at points where the curve has a relative maximum or minimum. 
When does the slope have its largest positive value?  The slope has its largest positive value at points where the curve is climbing most steeply upward. 
When does the slope have its largest negative value?  The slope has its largest negative value at points where the curve is climbing most steeply downward. The slope is never negative in this particular case (babies don't lose weight during gestation). 
How does the Color property affect the
Figure Window? 
Setting the Color property in the figure
command sets the color of the border region around the axes. A
color value of three 1's represents white.

EXAMPLE 5: Calculate rate of change (slope) of fetal length in inches per week
weeksRump = toRump(:, 1); weeksHeel = toHeel(:, 1); inchesRump = toRump(:, 2).* 0.393800888; inchesHeel = toHeel(:, 2).* 0.393800888; inchesPerWeekRump = diff(inchesRump) ./ diff(weeksRump); inchesPerWeekHeel = diff(inchesHeel) ./ diff(weeksHeel);
Questions  Answers 
Why didn't we append the toRump
length measurements and the toHeel length
measurements together in the same way as we did with the
weight measurements? 
The method of measuring the length is different in the two data files, so these length measurements need to be treated as distinct curves. 
EXAMPLE 6: Find the midpoints of the weeks intervals for plotting
rumpMid = (weeksRump(1:(end1)) + weeksRump(2:end))./ 2; heelMid = (weeksHeel(1:(end1)) + weeksHeel(2:end))./ 2;
EXAMPLE 7: Plot the weekly rate of change of fetal length in inches/week
figure('Color', [1, 1, 1]) subplot(2, 1, 1, 'XGrid', 'on') hold on plot(weeksRump, inchesRump, 'k'); plot(weeksHeel, inchesHeel, 'r'); ylabel('Length (in)') title ('Characterization of fetal length during pregancy') box on hold off % subplot(2, 1, 2, 'XGrid', 'on') hold on plot(rumpMid, inchesPerWeekRump, 'k'); plot(heelMid, inchesPerWeekHeel, 'r'); xlabel('Gestational week') ylabel('Growth rate (in/wk)') legend({'Crowntorump', 'Crowntoheel'}, 'Location', 'SouthOutside', ... 'Orientation', 'Horizontal') box on hold off
EXAMPLE 8: Calculate the percentage change in fetal weight
Create a new cell in which you type and execute:
percentChangeWeight = 100.*diff(weight)./weight(1:end1);
EXAMPLE 9: Calculate the percentage change in fetal weight
Create a new cell in which you type and execute:
figure('Color', [1, 1, 1]) % New figure ax = plotyy(weeks, weight, weekMid, percentChangeWeight); % Save axes xlabel(ax(1), 'Weeks') % Label xaxis of left axis ylabel(ax(1), 'Fetal weight (lbs)') % Label yaxis of left axis ylabel(ax(2), '% change') % Label yaxis of right axis title('Characterization of fetal weight during pregnancy') % Title one of the axes
You should see a Figure Window with the following graph:
Questions  Answers 
How can I add grid lines to a plot?  Set the 'XGrid' and/or 'YGrid' properties of the axes. The
subplot function creates a new axes. This example
shows how to set XGrid property at axes creation.
You can also add the grid using the plottools or in your script
using the set command.

Why did only one subplot have a legend?  Since both subplots use the same color scheme, a second legend would have been redundant and resulted in overcrowding. 
These lesson questions were written by Kay A. Robbins of the University of Texas at San Antonio and last modified on 24May2015.