Ana səhifə

Introduction version 04/06/03


Yüklə 141.5 Kb.
səhifə3/3
tarix25.06.2016
ölçüsü141.5 Kb.
1   2   3

Annotating plots in the figure window

Drawing tools are available in the figure window to label curves within the plot, and to draw arrows from the labels to the curves.


For example, after I have produced the plots with the commands above, I move the mouse pointer into the plotting window, I can click on the A (add text) icon, position the cursor near the curve and type this curve.
I can add an arrow by clicking on the arrow icon to the right of the add text icon, and click on the beginning location of the arrow and drag the arrow to the location I want.

Multiple data sets to the same plotting axes

Multiple data sets may be plotted on the same axes with the hold on and hold off commands. Before you use the plot command, you should place hold on in a line in the program. This causes subsequent plot commands to plot onto the same axes. You can specify different line or plotting symbols to differentiate the data sets. Hold off terminates plotting on the same axes. Without hold on and hold off each new plot call replaces the previous plot. You can see the use of hold on and hold off in sample program plotfraz.m.


If you want your Matlab program to produce plots on separate windows or pages, you should use the figure command before the new plot command. Figure will create a new plot window situated on top of the old one. You can separate the two figure windows by dragging the one on top with your mouse. These are pretty basic, and I don't think I need to provide an example.

Plotting a magnetic survey as traces
The software that comes with the Geometrics 858 magnetometer can generate a so-called xyz data file. This file is in text format, and you may use it as input to a contouring program like Surfer. When you are acquiring data, a "mark" flag is entered into the data file when the "mark" button is pressed. The magnetometer takes data at a fixed rate, such as 10 per second. The Geometrics program assumes that the operator is moving the magnetometer at a constant speed between the "marks" along the line. The processing program provided by Geometrics assigns x and y values to each data point based on this assumption. The output of that program is a list of x, y and corresponding magnetic field values. If a magnetic gradiometer was used, it is possible to obtain the magnetic field values from the top sensor, the bottom sensor or the difference or any combination. This is carried out within the MagMapper program.
I like to plot magnetics data as traces. You will see magnetics data acquired for archaeological work plotted this way (for historical reasons). Besides, it is always wise to look at your data in as simple a presentation as possible for possible debugging (identifying bad values). The method I present here will work with any kind of data which are acquired in parallel profiles. You need the data from all the survey lines in one big file in XYZ format, as provided by the Geometrics 858 program (MagMap). Typically, magnetic data are collected along north-south lines (taken as the y direction). To create the plotted trace formatI use the x and y data to draw the profile lines, and add scaled data to the x locations, so the plotted, lines represent data with excursions in the plus and minus x directions. I have provide a sample program for doing this, and the program is commented. The scaling factor should be set to make an attractive presentation for your data.
There is a another trick to plotting magnetic field data as traces. If you don't use this trick, you will be plotting a distracting "retrace" line from the end of one line to the beginning of the next. There is a special value that can be assigned to an ordinary numerical variable or matrix element. That value is "not a number", symbolized by Nan. The importance of Nan is that a plotting program will skip it. To eliminate plotting the retrace, I added a bogus data pont at the beginning and ending of of each y-line of data. X, y and the magnetic gradient value can all be set to nan. Thus, the plotting program does not plot these Nans, and the retrace is blanked. The sample data set and plotting program is included on the diskette as maglines.m.
You should also include a scale for the data. I devised a simple means to do that. I replace two adjacent data with bogus values that provide plus and minus spikes. A convenient place to place these data is at 1 meter along the first line of data. I show below the relevant portion of the data in program magnan2.m:
0 1.13 57768.85

0 1.06 57770.09

0 1.0 57500 %a bogus data spike of 500 nt (total excursion)

0 1.0 58000 % values bracket existing adjacent data

0 0.99 57771.111

0 0.92 57772.226

Mini homework: Remove some of the Nans from maglines.m and see the retrace line.

Mini homework: Add a bogus data spike of magnitude 1000 nt to the data in magnan2.m at 1.5 m along the first line.



Two Dimensional Data.
Two dimensional data can be presented a numbers on a map, as contours or they can be colorized according to the data value. The basic Matlab command is contour. It is possible to control the number and value of contour lines, and to control whether or not they are labelled, and the orientation of the labels. The basic form of contour has limitations. If the number of data are relatively small, the contours are straight line segments, the contour lines are angular. The basic contour command produces unlabelled colored contours. Also, contour produces labels that are poorly placed. You will see this when you try the command. Please realize that there is a lot of "art" or interpretation involved in contouring gelogical and geophysical data. A simple-minded contouring program may conceal a small but important detail in the data set. Please look at the numbers that you are contouring to make sure that important details aren't missed.

Simple contouring


From the Matlab prompt, enter demo, and choose visualization/3Dplots/contour. An attractive contour plot will be displayed, and also a short program that generates it. The short program is listed below. You should open up a new m-file, select, cut and paste this program into it. There are a couple of things you should try.

% Contour Plot of Peaks

z=peaks(25); % the peaks function is used to create a data set with 25 by 25 elements

contour(z,16); % the contour function is called with z as the argument. Sixteen levels of

% contours will be generated.

colorbar % adds a color scale.


The contours are are smooth with a 25 by 25 array. Try the same program lines with peaks(5) and you will see angular contours.
Change the contour(z,16) to contourf(z,16) (filled contours). You will see that this function fills the space between the contour lines with color. This is an attractive display, but I think it gives the viewer the mistaken impresssion that the surface is terraced, that is that the spaces between the contours are flat. I will show you another way to render the data in color and put in contour lines that does not produce this unrealistic impression.
Labeling contours
Matlab will label contours. For example, contour labels can be added in the peaks with the clabel command example by modifying it as follows. Notice the use of the extra matrices C and H, and the syntax. I will not attempt to explain the function of these matrices and syntax except to say that it makes the labeling work the way we would like.

% Contour Plot of Peaks

z=peaks(25);

contour(z,16);

[C,H]=contour(z,'k'); % The [C,H] are necessary, 'k' forces the makes % contours to be black.

clabel(C,H); % labels the contours



Suppose you want to specify what contours are to be used.
If you do not like the contour values that contour creates, then, you can specify your own. In this short program, I have created a one-dimensional matrix of contour values, cons, which I then include in the call to contour, which uses them to compute and label the contours.
% Contour Plot of Peaks

z=10*pi*peaks(25); % I have deliberately made the data into non- %round numbers

cons=-200:50:250 % these contour labels are round numbers

[C,H]=contour(z,cons,'k'); % the [C,H] are necessary 'k' makes black lines

clabel(C,H); % to label the contours

Use of colored tiles for gridded data (pcolor and shading interp)
Colored data maps are usually easier to interpret, especially for a non-mathematical audience. They are not very hard to make. The simplest way to represent data in color is with the pcolor command.
Here is a simple example of the use of pcolor command:
z=peaks(15); % make a demo data matrix set 15 by 15

pcolor(z) % display it as colored tiles

% only do this much for now

%shading interp % this line will smooth the colors and get rid of the lines between the boxes


Read the documentation for pcolor. Also look at the documentation for image and imagesc, and try them in the above example as a replacement for pcolor. Notice that image and imagesc plot the tiles without the black lines in between the tiles.
Notice that in the above example, the data comprise a two-dimensional matrix; the data must be acquired on a rectangular array, with no missing values. The X and Y values can be generated from a knowledge of the station spacing and line spacing. When plotted with the pcolor command, the data appear as colored tiles. The color of the tile will represent the average value of the data at the four corners of the tile. The tiles are outlined with thin black lines. If you would rather have each tile represent a single value of data, you should use the image command, which gives a similar display. Clearly, the tiles displayed by pcolor give the data a blocky appearance. A quick to obtain a smoother appearance is with the shading interp command, which should be placed AFTER the pcolor command.
You may want to write information within the region of the colored tiles. You may do this with the text command. See the help file.
Gridding irregularly spaced data
If your data are irregularly spaced, they can not be used as-is in the contour routine. If there are missing data, or your data are acqiured at random locations, they must be re-gridded. Re-gridding has the additional benefit that the data will then be uniformly sampled and thus they will be in a proper form for one- or two-dimensional filtering.

Smoothing and advanced contouring
You will find that for small numbers of data Matlab tends to draw contours which are straight line segments; the contour lines are angular. Most readers and editors, do not like the appearance of the angular contours. This is understandable, considering what contours are assumed to represent. There is no direct command in Matlab to smooth the contours, but it can be done with a few lines of programming, using the griddata and conv2 commands. There are several steps, which may be seen in MATLAB program and cont4 on the diskette. You can follow the commented commands in the programs for the following steps:

  1. Generate original x and y values for the data

  2. Generate a new set of x and y values, which are on a finer scale than the orginal data.

  3. Regrid the original data onto these x and y values.

  4. Smooth the data as follows:

  1. Generate a square array which will be the two-dimensional smoothing function. An example, you can use a five by five array, with each element set to the value of 1/25. Forcing the value of each term to 1/(total number of terms) gives the smoothing function unity gain.

  2. Carry out a two dimensional convolution (conv2) with the data and the smoothing function. There is a little trick to this. The call to conv2 includes the term 'same' which forces the output to have the same dimensions as the larger of the two input data sets. Try this operation without 'same' and or read the documentation on conv2 to learn why you want to do this.

Color scale

You see that is is fairly easy to make an attractive color map of data, with or without contours. You can provide a scale to associate the numerical values with the colors. This is easily accomplished with the colorbar command, which will post a color scale on the right side indicating numerical values for the colors. If you enter help colorbar you can find out how to force the color bar to be horizontal under the plot.


Setting the color scheme with colormap.
There are several color schemes for setting the colors that will be used by pcolor, image and imagesc. They can be selected by the colormap command. For example, colormap(gray) sets the colors to a linear gray scale. (Please note that the word gray has two acceptable spellings. The other spelling is grey. Matlab recognizes only gray. Place this command after the pcolor or image command. I find it difficult to find a list of the possible color schemes in the online documentation. The colormaps available are: hsv (default), hot, cool, pink, gray (not grey), bone, jet, copper, prism, flag.
For example, enter from the command line:
pcolor(peaks(25)) % will display the peaks function in color
colormap(gray) % now you will see it in gray scale
colormap(cool) % etc
colormap(hsv) % resets the default.


BASIC DATA SERIES ANALYSIS
Filtering with convolution
Convolution is a filtering process. The shorter of the two arguments is normally considered the impulse response of the filter. In more general terms, an impulse response that is comprised of a finite number of coefficients is known as an finite impulse filter (FIF).
A simple example of filtering with convolution is the Frazer filter, used with VLF wavetilt data. The main value of this filter is to change ''true crossovers" (zero crossings from positive to negative numbers going along the line ?) into positive numbers, to make it easier to visualize the location of conductors. Frazer filtering is a convolution of the tilt data with the series -1,-1, 1,1. There are a number of reasons why it is easy to apply this filter incorrectly (backwards). The arguments are too complex and not worth presenting here. I tell students to use common sense and make sure that true crossovers are indeed turned into positive numbers. If true crossovers are turned into negative numbers, you just fix it by changing the sign. I have added a few lines to program plottilt to carry out the convolution of the tilts with the filter coefficients, and renamed it plotfraz. A special convolution function, conv2, is used here. Conv2 can convolve two regular (two- dimensional) matrices , but it can also convolve one dimensional matrices. The extra value for the conv2 function is that if you add 'same' inside the parenthesis, it will give you a result that has the same number of points as the longer of the two input matrices. Otherwise there would be points in the output from regions where the input series did not completely overlap. I have done some other tricky business in this program involving using logical operators to set negative filtered values to zero, and also I am plotting two sets of data on the same axis. Details of these tricks will be discussed later.
% FRAGMENT OF PLOTFRAZ
% vlf wave tilt data

% format is:

% location (tab) tilt in percent

d=[0 -26


10 -19

% . the remaining data go here

% .

400 6];


x=d(:,1); % x is all the rows, column 1

tilt=d(:,2);% tilt is all the rows, column 2


ffc=[-1 -1 1 1]/4 % %frazer filter coefficients divided by 4.

ffd=conv2(tilt,ffc','same'); %do frazer filter


ffd1=(ffd<=0)*0 % logical operator <= , then *0

% to zero out values less than zero.

ffd2=(ffd>0).*ffd % logical op >0, then * original matrix

% to keep the values greater than zero

ffd3=ffd1+ffd2 % now combine those two matrices into one

hold on


plot(x,tilt) % plot x values on horizontal axis, d on vertical axis

title('wave tilt')

xlabel('distance in meters')

ylabel('tilt and filtered values')

bar(x,ffd3,0.4,'r') % plot the Frazer filtered values as bars.

hold off


Other filters
It is possible to specify specialized filters in terms of their frequency response. Examples of these filters are Butterworth and Tsebycheff, named for their designers. Simple methods of generating these filters are available in professional Matlab but not in Student Matlab.
Frequency spectrum computation (the DFT or FFT). The frequency spectrum of an impulse response may be found with the fft command. For those readers who are new to these concepts, I need to point out that the fft generates terms that may be confusing at first.

Spectrum vs time. The time evolution of a signal may be computed and displayed with the command specgram. This command is available in professional Matlab but not the student version.
Debugging hints: whos will get you a list of the matrices in use. You should use whos after you have run the program at least once. The list tells the size of each matrix. If you type the name of the matrix, Matlab will print the values of the matrix on the screen. This command is very handy for debugging. Sometimes you will not realize the dimensions of a matrix are not what you expect, and this may be the reason a matrix multiply or other operation will not work as you desire.

Making a movie
There are obvious advantages to presenting data or the results of computations as an animation; your attention is automatically drawn to the locations where the plot is changing. Please read the Matlab documention for the movie command, and the for command which creates looping.
I have written an animation called emmov which plots the electric field of an electromagnetic wave propagating into an absorbing earth. A fragment of the program is printed below with comments.

Essential steps are:




  1. Establish the matrix (M) in which the frames will be stored.

  2. Set up a loop in which you will create the graphic display that will comprise the frames of the movie.

  3. Create the graphic displays within that loop.

  4. Write those graphic images into the matrix which holds the movie with the getframe command.

  5. Display the movie with the movie command. Please note that you can slow the move down with a third argument in the command, and discussed in help movie. .

k is complex wavenumber (units are m-1, w is angular frequency in sec-1,

z is the depths, all defined earlier in the program.
M=moviein(20) % 20 frames of the movie will be stored in M

tt=0:T/20:T; % set up times for the snapshots

for jj=1:length(tt) % loop over the index of the times

efield=efield0*exp(-1.0*imag(k)*z).*cos(w*tt(jj)-real(k)*z);

% equation 3.29 Shen and Kan

% evaluate efield for all zs at a given time

hold on

plot(z,efield)



axis([0,250,-1 1]) % force axis to be what I want

xlabel('depth in meters')

ylabel('electric field')

hold off

M(:,jj)=getframe % put the figure into M

end % end of loop


movie(M,20) % play the movie 20 times

Mini-homework: Modify emmov by removing the hold on and hold off commands and see how the display changes.




Three dimensional data (displaying, slicing and rotating cubes of data)
Please run the Matlab demos. Select visualization, 3D Plots and run the demos, especially the demonstration of the slice command. Note that short programs are given that produce the figures. Also, you should read the documentation on the appropriate commands.

It is possible to load a three-dimensional cube of radar data and display it as a movie of time-slices. The radar data were acquired along parallel lines, comprising a close-spaced grid.


To read and display trace data you must know the file format and survey details including:

the data format (16 bit integer for Sensors and Software radar data)

the number of trace header bytes (128 for Sensors and Software radar data)

the number of traces per profile

the number of points per trace
The radar data consist of time series for each trace. These traces were acquired along lines 2 ft apart. The trace spacing is 0.5 ft. Using programs from the radar company, I edited each line to make sure that it had the same number of traces. (Some lines may have accidentally had one trace too many or too few.) I also edited the files so that it appeared that the traces were acquired along one long line. This is useful in preprocessing the data but not important here. The pre-processing consists of:


  • trimming or adding traces to the profiles to make sure that each profile has the same number of traces

  • shifting the traces in time to compensate for time drift using the first pick and first shift functions.

  • removing a long-period transient. This transient is assumed to be due to soil polarization, and removing it is known as "de-wowing: the data.

  • "gaining" the data. For example, applying an agc gain.

I have listed lines from my program tsmov (time slice movie) below with an explanation.

For simplicity, I count the header words in terms of two byte words, because I am going to read the data in as two byte (16 bit integers).
headerwds=64 % number of header words 64 words = 128bytes

ptspertrace=320 % points per trace (from .hd file)

wdspertrace=ptspertrace+headerwds %words per trace data plus header

tracesperline=61 % traces per line from field notes

lines=10 %number of profiles from field notes

totaltraces=tracesperline*lines

totnums=wdspertrace*tracesperline*lines % total number of numbers that will % be read
Then the data file is read with the following statements:
%read data in

%

fn='num3.dt1' %file name



fid=fopen(fn);

temp= fread(fid,totnums,'short');

status=fclose(fid);

Please read the documentation on fopen, fread, and fclose for details. The data format is specified as 16 bit integers by the 'short' option in the fread statement.


The data are read in as a one dimensional matrix; just a long string of numbers. I discard the last 200 points in each trace, because there isn't much geological information in that part of the trace; those data are mostly noise. To access and discard those data in a convenient manner, the data must be reshaped into a two dimensional matrix. For display the data are further reshaped into a three-dimensional matrix for use in the slicer routine. Please read the documentation for the reshape command.

%reform as two d array

twod=reshape(temp,wdspertrace,totaltraces);

less=200; % discard last 200 pts in each trace

ptspertrace=ptspertrace-less

twodnh=twod(64:(wdspertrace-1-less),:); %trim trace headers

% we are skipping points 0 to 63 and the end of the trace.
The following is very tricky. The data are not oriented properly to view with the slicer routine. If the following flipping around is not done, the cube will appear upside down, backwards etc.
twodtr=fliplr(twodnh');
Fliplr is "flip left right". The ' mark transposes the matrix. To visualize a transpose, imagine that the numbers are written as a two-dimensional matrix on a transparent piece of paper. You pick the paper up by the upper right corner, turn it over and place the (former) upper right hand corner at the lower left. The number in the upper left hand corner of the paper remains in the same location, and the numbers on the diagonal remain in the same location, but otherwise the rows and columns have all been exchanged. Again, please read the documentation for fliplr and ' .
Finally, we reshape the two dimensional matrix into a three dimensional matrix.
vol=reshape(twodtr,tracesperline,lines, ptspertrace);
The data are now organized as a three dimensional matrix as follows:
The first dimension specifies the profile number.

The second dimension specifies the traces number.

The third dimension specifies the point along the trace.
The program is now ready to make the frames of the movie. For each frame, the command slice is used to extract and display data from the matrix vol. You need to read the documentation for slice, view, getframe, movie, and other commands that may be new to you in this part of the program.
There is one for loop in this part of the program. Two indices (indexes ?) are used within the loop.

The end of the for loop is indicated by the end statement. The index of the for loop is the variable pt.

The index j is computed explicitly within the loop and it is used as a counter for the frames of the movie.

The program:



  • displays each frame of the movie while it is extracting the data from the cube.

  • quickly runs through the movie once it is all built.

  • plays the movie at the specified number of times.

M=moviein(31) % reserve storage for frames of movie

j=1; % frame counter

for pt=40:2:100 % loop over slices

slice(vol,[1 5 10],[1 61] ,pt)
% The slice display command is displaying

% slices from the three dimensional matrix vol. It is displaying:

%slices (lines) 1 5 and 10 in the first dimension, i.e. the sides of

% the box of data and slice in the middle,

%slices 1 and 61 in the second dimension (the beginning and ending of % % the lines, i.e. the ends of the box of data and one slice in

%the time (depth) indicated by variable pt.


xlabel('line number')

ylabel('trace number')

zlabel('down is down!')

view(-37.5,60) % set default three dimensional view. The arguments are

% azimuth and elevation.

shading interp

M(:,j)=getframe % put graphics display into movie storage matrix

j=j+1 % increment frame counter

'making movie'

end % end of the for loop


'playing movie at 0.5 frames per sec'

movie(M,5,0.5)% play movie 5 times


A note on brute force looping
Many, many computations can be done very compactly by the clever use of matrix methods. If you are accustomed to solving programming problems by looping, it is interesting to learn how to solve the same problems with matrix operations. There are few operations that can not be accomplished with matrix manipulations, which require looping. Pretty much all programming languages have provisions for looping. In Matlab, the basic looping command is the for statement. Selective looping is done with the while statement.
You check the Matlab internal documentation for details of looping with a for statement. I will call this brute force looping, because we typically just want to loop over the data to carry out the same operation on each matrix element. A great value in looping is to perform some operation depending on the data values.

Data repair; clipping with logical operators

Occasionally, you will have to work with a large data set that has a few data which are erratic, that is, these data are much higher or lower than all the others, and you think that they are due to blunders and they do not represent the quantity you are trying to measure. You can tell that you have a problem, because if you colorize the whole data set with pcolor, you get nearly all of the interesting data in one color, such as blue, and the bad data point may show up as one cell of red. If you contour the data, you will see bunched up contours around the bad data point and nothing elsewhere. The way to repair this data set is to edit the bad datum by hand if you can find it, or to clip the data. "Clipping" means that you replace the highest and/or lowest values with some constant. While this job can be done by looping, there is a very efficient way to do it with logical operators operating on the data matrix. Look over the help for operators OR, XOR, AND, and the logical operators for equals ==, greater than, and less than. Note that a double equals sign run together (==) is a logical operator, a single equals sign (=) is an assignment


I present here some examples of use of logical operators to find high and low values in a matrix. The logical operator by itself returns 0 or 1 depending on whether the relation is false or true. You can combine this with a term by term matrix multiplier to set to zero the matrix values that don't match your criteria, but keep those values that do match the criteria.
% Matlab program llogic

% demonstration of logical operators

% Each of the following lines of Matlab code will print the numbers on the screen.

z=rand(5) % generate 5 by 5 matrix of random numbers


zlhi=(z>=0.5) % has values of 1 if z >= 0.5 and values of 0 if z < 0.5 to 0

zllo=(z<0.5) % has values 1 if z < 0.5 and values of 0 if z >= 0.5 to 0

zhi=(z>=0.5).*z % has original value of z if z >= 0.5 zero otherwise
zlo=(z<0.5).*z % has original value of z if z < 0.5 zero otherwise

(ex. Data set with deliberate bad point. Use histogram and clipping to fix.)


Read over Matlab program clip.m on the diskette. It contains logical operators, and it illustrates:

How to generate a set of random numbers (to simulate a data set).

How to use logical operators and other operations to clip extremely high or extremely low values.

How to use subplot to plot in subsections of the graphics screen.

How to use the histogram function hist to visualize the spread of numbers in a data set and identify outliers.

Homework: Read the documentation for the rand and randn commands. How would you expect the histogram of values generated with rand and randn to be different? Change the rand command to the randn command in clip.m and notice the difference. Also, experiment by placing a multiplying coefficient in front of rand command to change the range of the values created. Often, measurement noise is simulated by adding random numbers to actual or simulated data. It would be sensible to make the mean of the added noise zero. Modify line with the call to rand to force the mean to be zero.


CONCLUSION

You have worked your way through my notes on geophysical applications of Matlab. I hope this has been helpful, and maybe even enjoyable. This is just the beginning. There is lots more to learn. I would like feedback from you, which you may send by e-mail to ctyoung@mtu.edu. I would particularly like to know if these notes were presented at the right level of difficulty. (Too basic? Too advanced?) I would be interested in presenting either course at your institution. I have a followup course on time series analysis in Matlab that you might be interested in. I am willing to answer questions about your specific Matlab application by e-mail.


BIBLIOGRAPHY
Chapman, Stephen J. 2002, Matlab Programming for Engineers (2nd Edition), Brooks/Cole

Excellent examples for general engineering problem solving.


Palm, William J., 2001, Introduction to Matlab 6 for Engineers, McGraw Hill, (with a supplement for Matlab 6.5) Excellent examples for general engineering problem solving.
Doveton, John, 1986, Log Analysis of Subsurface Geology Concepts and Computer Methods, John Wiley and Sons, New York, 273 pp. There is no mention of Matlab in this book, but there is a good basic discussion of the application of matrix methods to finding the mineral compostion from the response of multiple geophysical logs.
Reynolds, John, 1997, An Introduction to Applied and Environmental Geophysics, John Wiley and Sons, New York.

Sigmon, Kermit, 1998, A Matlab Primer, CRC Press, New York, 130 p. There are earlier editions available online which may be downloaded.


Yilmaz, Oz, 1987, Seismic Data Processing, Investigations in Geophysics Vol 2, Society of Exploration Geophysicists, PO Box 7027, Tulsa, OK, 74170-2740.
There is nothing about Matlab in Yilmaz' book , but the discussion about matrix methods for design of deconvolution operators ( Section 2.3 and Appendix B) should motivate you to learn matrix multiplication and inversion on the computer. His discussions could help you understand the importance of convolution and correlation, for example:

  • Basics of convolution and autocorrelation, section 1.2.2 pp 18 and 19

  • Convolution as a representation of the interaction of a wavelet and the layered Earth section 2.1 2.2 p 83 and following.

  • Inverse Filtering Section 2.3 p 94 and following


Contents of Workshop Diskette mydocuments\disconts.doc
Clip.m demo of clipping and use of histogram with 5 by 5 array of random numbers
Clipfx.m same as clip.m without graphics
Cont4.m uses gridded data, resamples smooths data

Data are from table top resistivity survey


Covtc.doc Cover sheet and table of contents for workshop notes in

Microsoft Word format.


d.dat magnetic survey gradient data acquired with Geometrics 858

Data format is

X location (line location) Y location (along line)

Magnetic field 1, magnetic field 2, gradient


d.nan same data as d.dat, with nans put in in between lines
emov.m Movie of sinusoidal electromagnetic wave penetrating

into conductive medium. Horizontal axis is depth


emov2.m Slight variation of emov.m
forsageep.doc Workshop notes in Microsoft Word format.
logmagconts.m Plots magnetic gradient data as contours over smoothed colored tiles.

The high dynamic range of the data is supressed by displaying the logarithm of the absolute value of the gradient, with sign restored.

Uses data in d.dat.
logmaglines.m Magnetic gradiometer data displayed as traces. The high dynamic range of the data is supressed by displaying the logarithm of the absolute value of the gradient, with sign restored.
magconts.m Plots magnetic gradient data as contours over smoothed colored tiles.
maglines.m Magnetic gradiometer data displayed as traces.
mov.m Displays a cube of radar data and rotates it.
newmovie.m Displays a cube of radar data. The movie is animated according the horizontal slice is moved upward in the movie.
num3.dt1 GPR data set (cube of data)
num3bs.dt1 The same data set byteswapped for use on Unix systems.
plotfraz.m Vlf wave tilt data and Frazer filtered values.
slicemovie.m Uses data filename for running on Unix system (data are swapbyted)
slicemovie2.m same as newmovie
tilt.m VLF tilt angle data are included in program. This is just a simple example of

a program containing data which are then plotted.




Copyright 2003 Charles T. Young, Houghton ,Michigan
1   2   3


Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©atelim.com 2016
rəhbərliyinə müraciət