aachangshuai 发表于 2010-8-27 13:18

分岔图程序

谁有正确的分岔图程序,能给我传一个吗?急需,谢谢啦

lidaijin 发表于 2010-9-25 23:08

论坛里有些例程,你可以参照一下

zhouyang664 发表于 2010-9-25 23:31

function fern
%FERNMATLAB implementation of the Fractal Fern
%   Michael Barnsley, Fractals Everywhere, Academic Press, 1993.
%   This version runs forever, or until stop is toggled.
%   See also FINITEFERN.

%分形厥的生成过程实际上是对平面上的一个点不断做变换。设x为一个含两个分量,x1和x2的向量,
%表示一个点。有四种不同的变换,都遵循下面的形式
%x-->Ax+b,
%而取不同的矩阵A和向量b。这被称为仿射变换。最常用的变换是
%A=,b=;
%这个变换可缩短并旋转向量x,然后在他的第二个分量上加1.6。反复应用这个变换的将点向上,向右
%移动,朝着厥的顶尖生成点。这个过程中,偶尔也会随机的采用另外三种变换中的一个,他们分别
%将点移到右边的子厥,左边的子厥和茎干的位置上。

%shg%讲一个已有的绘图窗口置于最前,若没有则创建一个新的窗口
%clf reset%将大部分图的属性设置为默认
set(gcf,'color','white',...
   'numbertitle','off','name','Fractal Fern')
x = [-1; 5];%设定初始点的坐标
h = plot(x(1),x(2),'.');
darkgreen = ;
set(h,'markersize',1,'color',darkgreen,'erasemode','none');%使句柄h对应的点更小,改变它的颜色,并设置当点坐标改变时,屏幕上已绘制的这个点的图像不被抹去。
axis([-3 3 0 10])%设置坐标范围
%axis off%不显示坐标
stop = uicontrol('style','toggle','string','stop', ...
   'background','white');%创建停止按钮
drawnow%重画

p= [ .85.92.991.00];%建立一个概率向量
A1 = [ .85.04; -.04.85];b1 = ;
A2 = [ .20 -.26;.23.22];b2 = ;
A3 = [-.15.28;.26.24];b3 = ;
A4 = ;%定义四个仿射变换

cnt = 1;%初始哈一个计数器,用来记录绘制点的数目。
tic%启动计时器
while ~get(stop,'value')%没按停止按钮,一直继续

      x = A2*x + b2;


   set(h,'xdata',x(1),'ydata',x(2));%重新画点
   drawnow
   cnt = cnt + 1;
end
t = toc;
s = sprintf('%8.0f points in %6.3f seconds',cnt,t);
text(-1.5,-0.5,s,'fontweight','bold');
set(stop,'style','pushbutton','string','close','callback','close(gcf)')


%生成sierpinski三角形,
%令初始点x=;Ax+b
%迭代矩阵为A=;
%b从下面三个向量中随机等概率地选取:
%b=;b=;b=;
%r=ceil(4*rand);

你看行不?

土木年华 发表于 2010-9-26 09:13

回复 zhouyang664 的帖子

不错,可以参考一下!

dichongli1985 发表于 2010-10-16 12:20

回复 lidaijin 的帖子

是的,有好多程序
页: [1]
查看完整版本: 分岔图程序