烟火之夏 发表于 2016-7-5 10:29

程序出现“访问什么的时候指数必须是整数或逻辑 ”的错误

clear all;clc
load 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.


这是由于什么引起的,对别的数据没有事,但是对这组数据就出现这样的问题,麻烦大神指导一下!!



我可以叫什么 发表于 2016-7-5 10:34

坐等大神出现吧,我也不会,抱歉抱歉

我可以叫什么 发表于 2016-7-5 10:34

坐等大神出现吧,我也不会,抱歉抱歉

八百标兵奔北坡 发表于 2016-7-5 11:41

这个是matlab程序吗

百年孤独 发表于 2016-7-5 14:06

由于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]
查看完整版本: 程序出现“访问什么的时候指数必须是整数或逻辑 ”的错误