Page 194 - Basics of MATLAB and Beyond
P. 194

10: y = linspace(ycentre - L,ycentre + L,N);
                                0.13s,  0%    11: [X,Y] = meshgrid(x,y);
                                0.67s,  2%    12:Z=X+ i*Y;
                                              13:Z0=Z;
                                              14: for k = 1:50;
                               23.02s, 76%    15:   Z = Z.^2 + Z0;
                                0.02s,  0%    16: end
                                0.36s,  1%    17: ind1 = find(isnan(Z));
                                0.43s,  1%    18: ind2 = find(~isnan(Z));
                                0.22s,  1%    19: Z(ind1) = 1;
                                0.08s,  0%    20: Z(ind2) = 0;
                                5.15s, 17%    21: contour(x,y,abs(Z),[.5 .5])
                                0.02s,  0%    22: grid;box
                                              23: axis equal off


                               Most of the time here is spent iterating the values of Z. You can get
                               a plot of the time taken by the most time-consuming lines of code by
                               capturing the output of the profile command and using it to produce a
                               pareto chart:

                               >> t = profile
                               t=                                 7733               100%
                                       file: [ 1x64 char   ]      6000               78%
                                   interval: 0.0100
                                                                  4000               52%
                                      count: [23x1   double]
                                                                  2000               26%
                                      state: ’off’
                               >> pareto(t.count)                   0                0%
                                                                       15   12   21
                               Here only the three most time-consuming lines (labelled on the x axis)
                               are shown, the rest taking too little time to be of concern. The left-hand
                               scale shows the time taken to do each line, in hundredths of a second.
                               The line is the cumulative time. If we wanted to speed up this code, we
                               would do well to concentrate on line 15, and forget trying to speed up
                               the graphics.


                               Profile in MATLAB 5.3

                               The profile command has been significantly expanded in matlab 5.3.
                               Use profile on to switch on the profiler. A hypertext report is pro-
                               duced by typing profile report. A graphical display of the profile
                               results is obtained by typing profile plot.








                               c   2000 by CRC Press LLC
   189   190   191   192   193   194   195   196   197   198   199