matlab for visualization ray gasser [email protected] is&t scientific visualization tutorial –...

34
Matlab for Matlab for Visualization Visualization Ray Gasser [email protected] IS&T Scientific Visualization Tutorial – Spring 2010

Post on 19-Dec-2015

228 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

Matlab for VisualizationMatlab for Visualization

Ray Gasser

[email protected]

IS&T Scientific Visualization Tutorial – Spring 2010

Page 2: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

MATLABMATLABMATrix LABoratory

– high performance language for technical computing

– interpreted language (compiler available)

– interactive GUI

– command line interface (Command Window)

– application specific toolboxes available (Parallel Computing, Statistics, etc.)

– coupled with Maple for Symbolic computation

– good documentation available (user guides, demos, videos, etc.)

– professional support services available from MathWorks

IS&T Scientific Visualization Tutorial – Spring 2010

Page 3: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

MATLAB – Data TypesMATLAB – Data TypesMatrix

– the basic data type is the matrix/array

– a vector is just a 1D array

– 2 facilities available for displaying vectors and matrices as graphs

• MATLAB interactive GUI plotting tool

• MATLAB graphics commands from the Command Window

IS&T Scientific Visualization Tutorial – Spring 2010

Page 4: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

MATLAB – Data TypesMATLAB – Data Types

IS&T Scientific Visualization Tutorial – Spring 2010

Volume Data– data defined on three-dimensional grids

– multidimensional arrays of scalar or vector data

– defined on lattice structures representing values sampled in 3-D space

– 2 basic types

• Scalar volume data

• single data values for each point

• examples: temperature, pressure, density, elevation

• Vector volume data

• two or three values for each point (components of a vector)

• magnitude and direction

• examples: velocity, momentum

Page 5: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

MATLAB - Graphics ModelMATLAB - Graphics ModelGraphics Model

– used to create visual representations of data

– two basic types of graphics objects:• Core graphics objects

• lines

• text

• rectangles

• patches (filled polygons)

• surfaces (3D grid of vertices)

• images (2D matrix representation of image)

• light sources

• axes (define coordinate system)

• Composite graphics objects

• core graphics objects grouped together

IS&T Scientific Visualization Tutorial – Spring 2010

Page 6: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

MATLAB – figure functionMATLAB – figure functionFigure

– all graphical output directed to a graphics window called a figure

– separate from the Command Window

– can contain menus, toolbars, user-interface objects, context menus, axes, or any

other type of graphics object.

– to create a new figure, use the figure function

• (type figure in a Command Window)

IS&T Scientific Visualization Tutorial – Spring 2010

Page 7: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

Code – figure functionCode – figure functionCommand Window

figure

IS&T Scientific Visualization Tutorial – Spring 2010

Page 8: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

MATLAB - PropertiesMATLAB - PropertiesProperties

– every graphics object has a set of properties associated with it

– defines different attributes of an object, such as its color, size, position, etc.

– usually specified by name/property pairs

– figure( 'PropertyName', propertyvalue, ...)

– can be set at creation time or later by using the set function

• Command Windowf = figure

set (f, 'Name','Test Window')

IS&T Scientific Visualization Tutorial – Spring 2010

Page 9: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

Code – property listCode – property listCommand Window

figure('Name','Test Window','Position',[100 500 350 350],'MenuBar','none')

IS&T Scientific Visualization Tutorial – Spring 2010

Page 10: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

MATLAB - ViewingMATLAB - ViewingViewing

– the process of displaying a graphical scene from various directions by adjusting

the camera position, changing the perspective, changing the aspect ratio, etc.

– the particular orientation you set to display the visualization

– composed from two basic functions:

• positioning the viewpoint to orient the scene – view function

• setting the aspect ratio and relative axis scaling – axis function

IS&T Scientific Visualization Tutorial – Spring 2010

Page 11: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

MATLAB – view functionMATLAB – view functionview

– the viewpoint is specified by

defining azimuth and elevation with

respect to the axis origin

– azimuth is a polar angle in the x-y

plane, with positive angles

indicating counterclockwise

rotation of the viewpoint. Elevation

is the angle above (positive angle)

or below (negative angle) the x-y

plane.

IS&T Scientific Visualization Tutorial – Spring 2010

Page 12: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

MATLAB – view function (cont)MATLAB – view function (cont)view

– MATLAB automatically selects a viewpoint that is determined by whether the plot

is 2-D or 3-D

• For 2-D plots, the default is azimuth = 0° and elevation = 90°

• For 3-D plots, the default is azimuth = -37.5° and elevation = 30°

– view(2) sets the default 2D view, with az = 0, el = 90.

– view(3) sets the default 3D view, with az = –37.5, el = 30.

– view(az,el) or view([az,el]) set the viewing angle for a 3D view.

IS&T Scientific Visualization Tutorial – Spring 2010

Page 13: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

Code – view functionCode – view functionCommand Window

Z = peaks(20);

figure;

h = surf(Z);

view([-20,25]);

IS&T Scientific Visualization Tutorial – Spring 2010

The peaks function is an example function of two variables, obtained by translating and scaling Gaussian distributions. peaks(n) returns an n-by-n matrix

The surf function create 3-D surface plots of matrix data.

Page 14: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

MATLAB – axis functionMATLAB – axis functionaxis

– enables you to adjust the aspect ratio of graphs.

– enables you to adjust the scaling of graphs.

– axis([xmin xmax ymin ymax zmin zmax]) sets the limits for the x-axis, y-axis and

z-axis of the current axes.

– axis vis3d freezes aspect ratio properties to enable rotation of 3-D objects (If you

will be interactively rotating the visualization in the figure window you should use

the vis3d option.)

IS&T Scientific Visualization Tutorial – Spring 2010

Page 15: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

Code – axis functionCode – axis functionCommand Window

Z = peaks(20);

figure;

h = surf(Z);

view([-20,25]);

axis([0 30 0 30 -15 -15]);

IS&T Scientific Visualization Tutorial – Spring 2010

Page 16: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

MATLAB - LightingMATLAB - LightingLighting

– enhances the visibility of surface shape and provides a 3D perspective to your

visualization.

– several commands enable you to position light sources and adjust the

characteristics of lit objects:

• light - creates a light object

• lighting - selects a lighting method

• material - sets the reflectance properties of lit objects

• camlight - creates or moves a light with respect to the camera position

• shading - controls the color shading of surface and patch graphic objects

IS&T Scientific Visualization Tutorial – Spring 2010

Page 17: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

Code - lightingCode - lightingCommand Window

Z = peaks(20);

figure;

h = surf(Z);

view(3);

axis on;

light;

lighting phong;

camlight('left');

shading interp;

IS&T Scientific Visualization Tutorial – Spring 2010

Page 18: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

MATLAB – Vis AlgorithmsMATLAB – Vis Algorithms• Modeling

– Matrix to Surface

– Slicing

• Scalar– Color Mapping

– Contours / Isosurfaces

• Vector– Oriented Glyphs

– Streamlines

IS&T Scientific Visualization Tutorial – Spring 2010

Page 19: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

MATLAB – modeling algorithmsMATLAB – modeling algorithmsMatrix to Surface

– a surface is defined by the z-coordinates of points above a rectangular grid in the

x-y plane.

– formed by joining adjacent points with straight lines.

– useful for visualizing large matrices.

– surf(X,Y,Z) creates a shaded surface using Z for the color data as well as

surface height. X and Y are vectors or matrices defining the x and y components

of a surface.

IS&T Scientific Visualization Tutorial – Spring 2010

Page 20: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

Code – surf functionCode – surf functionCommand Window

[X,Y] = meshgrid(-3:0.25:3);

Z = peaks(X,Y);

figure;

surf(X,Y,Z);

view(3);

axis([-3 3 -3 3 -10 10]);

grid on;

light;

lighting phong;

camlight('left');

IS&T Scientific Visualization Tutorial – Spring 2010

meshgrid(x,y) transforms the domain specified by vectors x and y into arrays X and Y, which can be used to evaluate functions of two variables and three-dimensional mesh/surface plots. meshgrid(x) is the same as [X,Y] = meshgrid(x,x).

Page 21: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

MATLAB – modeling algorithmsMATLAB – modeling algorithmsSlicing

– a slice is a "cross-section" of the dataset.

– any kind of surface can be used to slice the volume.

– the simplest technique is to use a plane to define the cutting surface.

– slice (X,Y,Z,V,sx,sy,sz) draws slices of the volume V along the x, y, z directions

in the volume V at the points in the vectors sx, sy, and sz. X, Y, and Z are 3D

arrays specifying the coordinates for V.

– the color at each point is determined by 3-D interpolation into the volume V.

IS&T Scientific Visualization Tutorial – Spring 2010

Page 22: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

Code – slice functionCode – slice functionCommand Window

[x,y,z,v] = flow;

figure;

xslice = 5;

yslice = 0;

zslice = 0;

slice(x,y,z,v,xslice,yslice,zslice);

view(3);

axis on;

grid on;

light;

lighting phong;

camlight('left');

shading interp;

IS&T Scientific Visualization Tutorial – Spring 2010

The flow dataset represents the speed profile of a submerged jet within an infinite tank (an example of scalar volume data).

Page 23: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

MATLAB – scalar algorithmsMATLAB – scalar algorithmsColor Mapping

– each scalar value in data set is mapped through a lookup table to a specific color.

– the color lookup table is called the colormap

• a three-column 2-D matrix

• each row of the matrix defines a single color by specifying three values in the

range of zero to one (RGB components).

• created with either array operations or with one of the several color table

generating functions (jet, hsv, hot, cool, summer, and gray).

• colormap(map) sets the colormap to the matrix map.

IS&T Scientific Visualization Tutorial – Spring 2010

Page 24: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

Code – colormap functionCode – colormap functionCommand Window

[x,y,z,v] = flow;

figure;

xslice = 5;

yslice = 0;

zslice = 0;

slice(x,y,z,v,xslice,yslice,zslice);

view(3);

axis([0 10 -4 4 -3 3]);

grid on;

colormap (flipud(jet(64)));

colorbar('vertical');

shading interp;

IS&T Scientific Visualization Tutorial – Spring 2010

Page 25: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

MATLAB – colormap editorMATLAB – colormap editor

If you want even more control over the color

mapping, you can use the colormap editor.

You open the colormap editor by selecting

Colormap from the Edit menu of the figure.

IS&T Scientific Visualization Tutorial – Spring 2010

Page 26: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

MATLAB – scalar algorithmsMATLAB – scalar algorithmsContours / Isosurfaces

– constructs a boundary between distinct regions in the data.

– contours are lines or surfaces of constant scalar value.

– isolines for two-dimensional data and isosurfaces for three-dimensional data.

– contour(X,Y,Z,v) draws a contour plot of matrix Z with isolines at the data values

specified in the vector v.

– isosurface(X,Y,Z,V,isovalue) computes isosurface data from the volume data V

at the isosurface value specified in isovalue. The isosurface function connects

points that have the specified value the same way isolines connect points of

equal elevation.

IS&T Scientific Visualization Tutorial – Spring 2010

Page 27: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

Code – contour functionCode – contour functionCommand Window

[X,Y] = meshgrid(-3:0.25:3);

Z = peaks(X,Y);

figure;

isovalues = (-3.0:0.5:3.0);

contour(X,Y,Z,isovalues);

view(2);

axis on;

grid on;

IS&T Scientific Visualization Tutorial – Spring 2010

Page 28: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

Code – isosurface functionCode – isosurface functionCommand Window

[x,y,z,v] = flow;

isovalue = -1;

purple = [1.0 0.5 1.0];

figure;

p = patch(isosurface(x,y,z,v,isovalue));

isonormals(x,y,z,v,p);

set(p,'FaceColor',purple,'EdgeColor','none');

view([-10 40]);

axis on;

grid on;

light;

lighting phong;

camlight('left');

IS&T Scientific Visualization Tutorial – Spring 2010

patch is the low-level graphics function that creates patch graphics objects. A patch object is one or more polygons defined by the coordinates of its vertices.

Page 29: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

MATLAB – vector algorithmsMATLAB – vector algorithmsOriented Glyphs

– draw an oriented, scaled glyph for each vector.

– glyphs are polygonal objects such as a cone or an arrow.

– orientation and scale of glyph indicate the direction and magnitude of the vector.

– glyph may be colored according to vector magnitude or some other scalar value.

– coneplot(X,Y,Z,U,V,W,Cx,Cy,Cz) plots vectors as cones or arrows.

• X, Y, Z define the coordinates for the vector field

• U, V, W define the vector field

• Cx, Cy, Cz define the location of the cones in the vector field

• coneplot(...,'quiver') draws arrows instead of cones.

IS&T Scientific Visualization Tutorial – Spring 2010

Page 30: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

Code – coneplot functionCode – coneplot functionCommand Windowload wind;

xmin = min(x(:));

xmax = max(x(:));

ymin = min(y(:));

ymax = max(y(:));

zmin = min(z(:));

zmax = max(z(:));

scale = 4;

figure;

[cx cy cz] = meshgrid(xmin:5:xmax,ymin:5:ymax,zmin:2:zmax);

coneplot(x,y,z,u,v,w,cx,cy,cz,scale,'quiver');

view([-35 60]);

axis on;

grid off;

IS&T Scientific Visualization Tutorial – Spring 2010

The wind dataset represents air currents over North America. The dataset contains six 3-D arrays: x, y, and z are coordinate arrays which specify the coordinates of each point in the volume and u, v, and w are the vector components for each point in the volume.

Page 31: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

MATLAB – vector algorithmsMATLAB – vector algorithmsStreamlines

– the path a massless particle takes flowing through a velocity field (i.e. vector field)

– can be used to convey the structure of a vector field by providing a snapshot of

the flow at a given instant in time.

– multiple streamlines can be created to explore interesting features in the field.

– computed via numerical integration (integrating product of velocity times delta T).

– streamline(X,Y,Z,U,V,W,startx,starty,startz) draws stream lines from the vector

volume data.

• X, Y, Z define the coordinates for the vector field

• U, V, W define the vector field

• startx, starty, startz define the starting positions of the streams

IS&T Scientific Visualization Tutorial – Spring 2010

Page 32: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

Code – streamline functionCode – streamline functionCommand Windowload wind;

xmin = min(x(:));

xmax = max(x(:));

ymin = min(y(:));

ymax = max(y(:));

zmin = min(z(:));

zmax = max(z(:));

purple = [1.0 0.5 1.0];

figure;

[sx sy sz] = meshgrid(xmin,ymin:10:ymax,zmin:2:zmax);

h = streamline(x,y,z,u,v,w,sx,sy,sz);

set(h,'LineWidth',1,'Color',purple);

view([-40 50]);

axis on;

grid off;

IS&T Scientific Visualization Tutorial – Spring 2010

Page 33: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

MATLAB - ResourcesMATLAB - Resources IS&T tutorials

– Introduction to MATLAB http://scv.bu.edu/documentation/tutorials/MATLAB/

– Using MATLAB to Visualize Scientific Data http://scv.bu.edu/documentation/tutorials/visualization-with-matlab/

Websites– www.mathworks.com/products/matlab/

– www.mathworks.com/access/helpdesk/help/techdoc/index.html

– www.mathworks.com/academia/student_center/tutorials

Wiki– http://matlabwiki.mathworks.com/

MATLAB Workshop end March beginning April 2010

IS&T Scientific Visualization Tutorial – Spring 2010

Page 34: Matlab for Visualization Ray Gasser rayg@bu.edu IS&T Scientific Visualization Tutorial – Spring 2010

SourcesSources

Getting Started with MATLAB, version 7, The MathWorks, Inc.

Using MATLAB, version 7, The MathWorks, Inc.

Using MATLAB Graphics, version 7, The MathWorks, Inc.

http://www.mathworks.com/access/helpdesk/help/techdoc/index.html

IS&T Scientific Visualization Tutorial – Spring 2010