expand3 documentation
The expand3 function creates a 3D matrix from the product of a 2D grid and a 1D vector.
Back to Climate Data Tools Contents.
Contents
Syntax
Z3 = expand3(Z,y)
Description
Z3 = expand3(Z,y) creates a 3D matrix Z3 through elementwise multiplication of the 2D grid Z and the 1D array y.
Examples
Imagine you have a 50x50 grid like this:
Z = peaks(50);
pcolor(Z);
title 'Z grid'

And you know that whole grid varies sinusoidally through time like this:
% A sinusoid at 100 equally spaced intervals: y = sin(linspace(0,2*pi,100)); plot(y) title 'y array'

These are the dimensions of Z and y:
whos Z y
Name Size Bytes Class Attributes Z 50x50 20000 double y 1x100 800 double
We want to turn that 50x50 Z grid and the 1x100 y array into a 50x50x100 matrix where the first 50x50 slice of Z3 is equivalent to Z*y(1), the second slice is Z*y(2), etc. Here's how:
Z3 = expand3(Z,y);
whos Z3
Name Size Bytes Class Attributes Z3 50x50x100 2000000 double
That's it.
You can then animate the plot and save it as a gif like this:
% Plot the first frame: h = surf(Z(:,:,1)); shading interp axis([-3 3 -3 3 -9 9])
% Make it fancy: camlight set(gca,'color','k') set(gcf,'color','k') caxis([min(Z(:)) max(Z(:))])
% Write the first frame: gif('myfile.gif')
% Loop through each remaining frame: for k = 2:100 set(h,'Zdata',Z(:,:,k)) gif % saves this frame end
And that's it. Here's what the final product looks like:
Author Info
This function is part of the Climate Data Toolbox for Matlab. The function and supporting documentation were written by Chad A. Greene of the University of Texas at Austin.