Logical Indices outside of Array bounds with multiple iterations of bxsfun and vecnorm.

2 次查看(过去 30 天)
Hi, I am trying to create a code that will later allow me to automate, using a function .m file, the creation of a cube with 'bubbles within' similar to the shape attached.
When running this code;
clc; clear;
r = [5,3,6]; %Define Vector of radius of bubbles to be created
x = [5,4,-12]; %Define x location of bubbles
y = [8,-12,-1];
z = [-6,6,0];
cubelength = 50; %Length of cube to create
[xg, yg, zg] = meshgrid(-(cubelength/2):1:cubelength/2); %Create mesh of cube
Pcube = [xg(:) yg(:), zg(:)];
bubble = @(x,y,z,r) vecnorm(bsxfun(@minus,Pcavitycube',[x y z]')) > r; %Define what bubble is
Pcavitycube1 = Pcube(bubble(x(:,1),y(:,1),z(:,1),r(:,1)) ,:); %Remove bubble 1 from cube
Pcavitycube2 = Pcavitycube1(bubble(x(:,2),y(:,2),z(:,2),r(:,2)) ,:); %Remove bubble 2
Pcavitycube3 = Pcavitycube2(bubble(x(:,3),y(:,3),z(:,3),r(:,3)) ,:); %etc
cubeshp = alphaShape(Pcube); %Create Alphashape of mesh of original cube
shp = alphaShape(Pcavitycube3); %Create Alphashape of mesh of cube w/ cavities
[tri,loc] = alphaTriangulation(shp); %Fill alphashape
model = createpde('thermal','steadystate'); %Create PDE model
[sensor,mshCube] = geometryFromMesh(model,loc',tri'); %Create Geometry
figure, pdegplot(model,'FaceAlpha',0.5); %Plot
I receive the following error message, after completing the 'removal' of mesh in the line Pcavitycube1.
The logical indices in position 1 contain a true value outside of the array bounds.
Error in testingfunc (line 15)
Pcavitycube = Pcavitycube(bubble(x(:,2),y(:,2),z(:,2),r(:,2)) ,:);
I Know this is possible to do using a singular line i.e;
Pcavitycube = Pcube( bubble(5, 8, -6, 5) & bubble(4, -12, 6, 3) & bubble(-12, -1, 0, 6),:);
However I wanted to break it down for use with an unknown number/size/location of bubbles.
Anyhelp decoding the error would be grand.

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Geometry and Mesh 的更多信息

产品


版本

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by