Surface plot error for Z must be a matrix, not a scalar or vector

1 view (last 30 days)
function polar3D(theta,phi,f)
f = abs(f);
f = f/max(max(f));
[x,y,z] = sph2cart(f,theta,phi);
[N,M] = size(x);
color = ones(N,M);
surf(x,y,z,color);
Just don't know how to make z a matrix after sph2cart

Answers (2)

Walter Roberson
Walter Roberson on 27 Sep 2021
careful, x is (eventually) going to be 3d, and the way you use size is wrong for 3d.
I have seen cases where z was returned as an unexpected number of dimensions when phi was scalar.
  1 Comment
Hu1k
Hu1k on 27 Sep 2021
So should I change x to 1d or input phi as a matrix. And could you tell me how I should change that?

Sign in to comment.


Matt J
Matt J on 27 Sep 2021
Edited: Matt J on 27 Sep 2021
Just don't know how to make z a matrix after sph2cart
z will be a matrix if at least one of the inputs f, theta and phi are matrices. This should be the case, otherwise you haven't generated samples that cover a 2D surface.
  1 Comment
Walter Roberson
Walter Roberson on 28 Sep 2021
Edited: Walter Roberson on 28 Sep 2021
I have seen x, y come out 2d but z come out vector. But I have also seen z come out as matrix. I did not track down the conditions

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!