How to choose/change an isovalue

3 views (last 30 days)
Sana Ahmed
Sana Ahmed on 13 Apr 2020
Edited: darova on 13 Apr 2020
I have a script plotting eigenvectors using isosurface but I want to change the level that they are plotted on. As I have it now, it won't plot anything unless the isovalue is 0 (or if the temp array is flipped, then the isovalue must be n). How do I change this so that I can plot the vectors on different levels based on the content of the vector?
n = 15;
G = numgrid3d(n);
A = delsq3d(G);
m = n - 2;
p = m^3;
[V,D] = eigs(A,p);
vector = V(:,p-7);
vector = reshape(vector, [m,m,m]);
temp = (n/m:n/m:n);
x = zeros(m,m,m);
for i = 1:m
for j = 1:m
x(:,i,j) = temp(i);
end
end
y = zeros(m,m,m);
for i = 1:m
for j = 1:m
y(i,:,j) = temp(i);
end
end
z = zeros(m,m,m);
for i = 1:m
for j = 1:m
z(:,:,i) = temp(i);
end
end
figure(1)
plot = patch(isosurface(x,y,z,vector,0));
isonormals(x,y,z,vector,plot)
  2 Comments
Walter Roberson
Walter Roberson on 13 Apr 2020
why not use ndgrid or meshgrid to create your x y z arrays?
Sana Ahmed
Sana Ahmed on 13 Apr 2020
I hadn't thought of it, but I tried it an using meshgrid cuts down on a lot of code. Thanks!

Sign in to comment.

Answers (0)

Community Treasure Hunt

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

Start Hunting!