matlab画db,用MATLAB画康托图

clear

all; hold off;

h(1)=1;n(1)=1;

a(1,1,1)=0;

m=6; % 层数

kc=2; %分叉数

for k=2:m;h(k)=h(k-1)/(2*kc-1);n(k)=n(k-1)*kc;end;

% right end point a

for k=2:m; for i=1:n(k-1);for

j1=1:kc;j=kc-j1;a(k,kc*i-j,1)=a(k-1,i,1)+2*(j1-1)*h(k);end;end;end;

%k=2

% Basic figure

z=[0.5 1

0.5 0

0 0

1 0]; plot(z(:,1),z(:,2));

axis([-0.2 1.1 -m

1.1]);

% top point

j=0;

for k=1:m;for

i=1:n(k);j=j+1;px(j,1)=a(k,i,1)+h(k)/2;px(j,2)=2-k;px(j,3)=h(k);end;end;

%k=1

nj=j;

for j=2:nj; q(:,1)=z(:,1)*px(j,3);q(:,2)=z(:,2);%伸缩变换

wx=px(j,1)-q(1,1);wy=px(j,2)-q(1,2);

vx=q(:,1)+wx;vy=q(:,2)+wy;%坐标平移

hold on; plot(vx,vy);

end;%j=2

若要调节康托图的维数,只需将代码中的分叉数修改一下。而更改康托图的层数,只需修改相应的数据。

二维的:

clear all; hold off;

h(1)=1;n(1)=1; a(1,1)=0;

m=3; % 层数

kc=2; %分叉数

for k=2:m;h(k)=h(k-1)/(2*kc-1);n(k)=n(k-1)*kc;end;

% right end point a

for k=2:m; for i=1:n(k-1);for

j1=1:kc;j=kc-j1;a(k,kc*i-j)=a(k-1,i)+2*(j1-1)*h(k);end;end;end;

%k=2

% Basica Figure

z=[0 0

0 1

1 1

1 0

0 0

];

plot(z(:,1),z(:,2));axis([-0.1 1.1 -0.1 1.1]);

for k=2:m;

for i=1:n(k);for j=1:n(k);q=z*h(k);%伸缩变换

wx=a(k,i)-q(1,1);wy=a(k,j)-q(1,2);

vx=q(:,1)+wx;vy=q(:,2)+wy;%坐标平移

hold on; plot(vx,vy);

end;end; %i=,j=

end; %k=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值