作业帮 > 综合 > 作业

初学matlab,大家看看这个程序错在哪了?

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/07/07 13:12:49
初学matlab,大家看看这个程序错在哪了?
function sierpinskihm(x,y,z,d,n)
% SIERPINSKIHM 谢尔宾斯基海绵
%调用格式:sierpinskihm(x,y,z,d,n)
% x为初始正方体的第一个顶点的横坐标
% Y为初始正方体的第一个顶点的纵坐标
% z为初始正方体的第一个顶点的竖坐标
% d为初始正方体的边长
% n为迭代次数
syms d
base=rand(1,3);
dian=base(1,:);
x=dian(1);
y=dian(2);
z=dian(3);
x4=x;y4=y;z4=z;d4=d;
x2=[];y2=[];z2=[];
a=[0,1,2];
[x1,y1]=meshgrid(a);
[x1,z1]=meshgrid(x1,a);
[y1,z1]=meshgrid(y1,a);
xl=[x1(1,1:4),x1(1,6:9),x1(2,[1,3,7,9]),x1(3,1:4),x1(1,6:9)];
y1=[y1(1,1:4),y1(1,6:9),y1(2,[1,3,7,9]),y1(3,1:4),y1(1,6:9)];
zl=[z1(1,1:4),z1(1,6:9),z1(2,[1,3,7,9]),z1(3,1:4),z1(3,6:9)];
n=5;
for j=1:n
for i=1:length(x)
x3=x(i)+d/3*xl;
y3=y(i)+d/3*y1;
z3=z(i)+d/3*zl;
x2=[x2,x3];y2=[y2,y3];z2=[z2,z3];
end
d=d/3;x=x2;y=y2;z=z2;
end
axis([x4,x4+d4,y4,y4+d4,z4,z4+d4])
for i=1:length(x)
patch(x(i)+[d,d,d,d,d],Y(i)+[0,d,d,0,0],z(i)+[0,0,d,d,0],z(i)+[0,0,d,d,0])
patch(X(i)+[0,d,d,0,0],Y(i)+[0,0,0,0,0],z(i)+[0,0,d,d,0],Y(i)+[0,0,0,0,0])
patch(x(i)+[0,d,d,0,0],y(i)+[d,d,d,d,d],z(i)+[0,0,d,d,0],x(i)+[0,d,d,0,0])
patch(X(i)+[0,d,d,0,0],Y(i)+[0,0,d,d,0],z(i)+[0,0,0,0,0],Y(i)+[0,0,d,d,0])
patch(x(i)+[0,d,d,0,0],y(i)+[0,0,d,d,0],Z(i)+[d,d,d,d,d],x(i)+[0,0,0,0,0])
patch(X(i)+[0,0,0,0,0],Y(i)+[0,d,d,0,0],Z(i)+[0,0,d,d,0],Z(i)+[0,0,d,d,0])
end
axis off
set(gef,'color',[1,1,1])
Strings passed to EVAL cannot contain function declarations.
初学matlab,大家看看这个程序错在哪了?
你这个是死循环啊.运行不出来.
再问: 那能不能帮忙调调啊,折腾了好几天了
再答: 代码的错误太多了,从哪里拷贝来的。。。调了很久ing,不采纳就太对不起我了。你把代码改成下面的,我里面的迭代次数取了3,画出图是这样的: 我试了一下,迭代次数取4的时候电脑就很卡了,取5的时候基本没反应了。 代码取下: function baidu7(x,y,z,d,n)% SIERPINSKIHM 谢尔宾斯基海绵%调用格式:sierpinskihm(x,y,z,d,n)% x为初始正方体的第一个顶点的横坐标% y为初始正方体的第一个顶点的纵坐标% z为初始正方体的第一个顶点的竖坐标d=100;% d为初始正方体的边长,不要取smys,要赋值的。n=3;% n为迭代次数base=rand(1,3);dian=base(1,:);x=dian(1);y=dian(2);z=dian(3);x4=x;y4=y;z4=z;d4=d;x2=[];y2=[];z2=[];a=[0,1,2];[x1,y1]=meshgrid(a);[x1,z1]=meshgrid(x1,a);[y1,z1]=meshgrid(y1,a);x1=[x1(1,1:4),x1(1,6:9),x1(2,[1,3,7,9]),x1(3,1:4),x1(1,6:9)];y1=[y1(1,1:4),y1(1,6:9),y1(2,[1,3,7,9]),y1(3,1:4),y1(1,6:9)];z1=[z1(1,1:4),z1(1,6:9),z1(2,[1,3,7,9]),z1(3,1:4),z1(3,6:9)];for j=1:nfor i=1:length(x)x3=x(i)+d/3*x1;y3=y(i)+d/3*y1;z3=z(i)+d/3*z1;x2=[x2,x3];y2=[y2,y3];z2=[z2,z3];endd=d/3;x=x2;y=y2;z=z2;endfor i=1:length(x)patch(x(i)+[d,d,d,d,d],y(i)+[0,d,d,0,0],z(i)+[0,0,d,d,0])patch(x(i)+[0,d,d,0,0],y(i)+[0,0,0,0,0],z(i)+[0,0,d,d,0])patch(x(i)+[0,d,d,0,0],y(i)+[d,d,d,d,d],z(i)+[0,0,d,d,0])patch(x(i)+[0,d,d,0,0],y(i)+[0,0,d,d,0],z(i)+[0,0,0,0,0])patch(x(i)+[0,d,d,0,0],y(i)+[0,0,d,d,0],z(i)+[d,d,d,d,d])patch(x(i)+[0,0,0,0,0],y(i)+[0,d,d,0,0],z(i)+[0,0,d,d,0])endaxis equalaxis off