⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 finitefern.m

📁 有趣的可视的数值方法 出自网站http://www.mathworks.com/moler
💻 M
字号:
function F = finitefern(varargin)%FINITEFERN   MATLAB implementation of the Fractal Fern.%   Michael Barnsley, "Fractals Everywhere", Academic Press, 1993.%%   FINITEFERN with no arguments plots 100000 points.%   FINITEFERN(N) plots N points.%   FINITEFERN(N,'s') shows each step.%%   F = FINITEFERN(N,r,c) returns an r-by-c sparse logical%   bit map array that can be viewed with%      spy(F)%   or%      image(F)%      colormap([1 1 1; 0 2/3 0])%   F can be saved in PNG (Portable Network Graphics) format with%      imwrite(full(F),'myfern.png','png','bitdepth',1)%%   See also: FERN.showstep = (nargin >= 1) && ischar(varargin{end});if showstep || (nargout == 0)   clf   shg   set(gcf,'color','white','doublebuffer','on')   darkgreen = [0 2/3 0];   darkred = [2/3 0 0];endif showstep   finish = uicontrol('style','toggle','string','finish', ...      'value',0,'background','white');endif (nargin >= 1) && ~ischar(varargin{1})   n = varargin{1};else   n = 100000;endp  = [ .85  .92  .99  1.00];A1 = [ .85  .04; -.04  .85];  b1 = [0; 1.6];A2 = [ .20 -.26;  .23  .22];  b2 = [0; 1.6];A3 = [-.15  .28;  .26  .24];  b3 = [0; .44];A4 = [  0    0 ;   0   .16];x = [.5; .5];xs = zeros(2,n);xs(:,1) = x;for j = 2:n   r = rand;   if r < p(1)      x = A1*x + b1;   elseif r < p(2)      x = A2*x + b2;   elseif r < p(3)      x = A3*x + b3;   else      x = A4*x;   end   xs(:,j) = x;   if showstep      h = plot(xs(1,1:n-1),xs(2,1:n-1),'.',x(1),x(2),'o');      set(h(1),'markersize',6,'color',darkgreen);      set(h(2),'color',darkred);      axis([-3 3 0 10])      axis off      showstep = get(finish,'value') == 0;      if ~showstep, delete(finish), end      pause(.01)   endendif nargout == 0   plot(xs(1,:),xs(2,:),'.','markersize',1,'color',darkgreen);   axis([-3 3 0 10])   axis offelse   if nargin < 3      r = 768; c = 1024;   else      r = varargin{2}; c = varargin{3};   end   j = round((xs(1,:)+3)/6*c);   i = round((9-.9*xs(2,:)+.5)/10*r);   F = sparse(i,j,1,r,c)~=0;end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -