程序出现“访问什么的时候指数必须是整数或逻辑 ”的错误
clear all;clcload samp22.txt
idx=find(samp22(:,4)==1);
pointS=samp22(idx,1:3);
data.x=pointS(:,1);
data.y=pointS(:,2);
data.z=pointS(:,3);
nPoint=length(data.x);
pointS=;ch=convhull(data.x,data.y);
area=polyarea(data.x(ch,1),data.y(ch,1));
densityHorizontal=nPoint/area;
xDis=1/sqrt(densityHorizontal);
xDis=ceil(xDis*10)/10;
yDis=xDis;
ch1=convhull(data.x,data.z);
area1=polyarea(data.x(ch,1),data.z(ch,1));
densityHorizontal1=nPoint/area1;
xDis1=1/sqrt(densityHorizontal1);
xDis1=ceil(xDis1*10)/10;
ch2=convhull(data.y,data.z);
area2=polyarea(data.y(ch,1),data.z(ch,1));
densityHorizontal2=nPoint/area2;
yDis1=1/sqrt(densityHorizontal2);
yDis1=ceil(yDis1*10)/10;
zDis=min(xDis1,yDis1);%%%取y,z和x,z之中比较小的
min_x=min(pointS(1,:)); max_x=max(pointS(1,:));
min_y=min(pointS(2,:)); max_y=max(pointS(2,:));
min_z=min(pointS(3,:)); max_z=max(pointS(3,:));
Column=ceil((max_x-floor(min_x))/xDis);%列(j)
Row = ceil((max_y-floor(min_y))/yDis);%行 (i)
Height= ceil((max_z-floor(min_z))/zDis);%高(k)
elementMesh=zeros(Row,Column,Height);
X=pointS(1,:); Y=pointS(2,:); Z=pointS(3,:);
>> for i=1:nPoint
xColumn=ceil((X(i)-floor(min_x))/xDis);
yRow=ceil((Y(i)-floor(min_y))/yDis);
zHeight=ceil((Z(i)-floor(min_z))/zDis);
elementMesh(yRow,xColumn,zHeight)=1;
end
clear i
出现这样的错误:
??? Attempted to access elementMesh(2,0,21); index must be a positive integer or logical.
这是由于什么引起的,对别的数据没有事,但是对这组数据就出现这样的问题,麻烦大神指导一下!!
坐等大神出现吧,我也不会,抱歉抱歉
坐等大神出现吧,我也不会,抱歉抱歉
这个是matlab程序吗
由于xColumn = 0引起的
你可以在你最后的for循环中,按照以下方式修改(添加红字部分):
for i=1:nPoint
xColumn=ceil((X(i)-floor(min_x))/xDis);
yRow=ceil((Y(i)-floor(min_y))/yDis);
zHeight=ceil((Z(i)-floor(min_z))/zDis);
if (xColumn>0)
elementMesh(yRow,xColumn,zHeight)=1;
end
end
页:
[1]