colour dependent on the value at a certain point

So I plan to represent some data in terms of a sphere. I want to draw a sphere using my x y and z coordinates which I think I know how to do but then I would like to colour code the surface of the sphere dependent on the values of my function which depend on x and y z so to have for example, red for high values blue for low etc. any ideas how I go about this?
Many thanks guys! :)

10 commentaires

color code the vertices or the faces? If the vertices is color interpolation to be done along the edges or faces?
Bran
Bran le 19 Jan 2013
Modifié(e) : Walter Roberson le 19 Jan 2013
Thanks for asking em to clarify Walter. Ok so I have take my coordinates and used them to draw a sphere using the following code;
[x y z] = sphere
surf(x y z)
What I would like to do now is colour code the surface of the sphere so the colours represent FFT values calculated at my coordinates. So I dont really kow which would be best to use, the faces or vertices.
Where do you want the colors to change, and should the change be abrupt or should they shade into each other?
Ideally they would change and shade into eachother ... I thought perhaps to use Surf (x, y z, c) but I dont know if that would give me the coreect effect?
Also I am having trouble isolating the information on the other shell.. My function containing the FFts is called A and I want just the FFT values on the other surface, coordinates;
-8.0000 0.0000 0
0.0000 -8.0000 0
0.0000 0 -8.0000
0.0000 0 8.0000
0.0000 8.0000 0
8.0000 0 0
I let this matrix be P , but when I ask for A(P) I get the following error; Subscript indices must either be real positive integers or logicals.
So I understand I must isolate the acual indices where these points occur but how do I do this??
Many many thanks Walter in advance :)
FFT of what? FFT is usually by frequency (or angle), rather than spatial. Depending on what you are doing there might not be any particular coordinates associated with the FFT. Or there might be a whole bunch of FFT coefficients associated with each coordinate.
Broadly speaking, if you are not doing FFT of a spherical function (including the possibility of FFT of a series of voxels arranged as a sphere), then you would probably not expect a spherical output of the FFT.
Bran
Bran le 20 Jan 2013
Yea I get your point thanks so much Walter for drawing that to my attention I calculated the FFT of a signal that was sampled at various cartesian coordinates... so to work out a pdf... however, I thought a sphere that was colour coded may be a good way to represent the resulting peak that was produced... I am prob approaching this in the wrong way
The FFT output is usually the same shape as the input (though that can vary if you use non-default number of points, or if you are doing an FFT over irregular points)
The input coordinates: are they 2D or 3D? Arranged in a circle? Arranged in a sphere? Arranged in rectangle? Regularly spaced or Irregularly spaced?
Bran
Bran le 20 Jan 2013
The input was 3D arranged in a sphere :)
Ah, then spherical output representation becomes reasonable -- though surface of the sphere vs sphere as a volume becomes a consideration.
I take it you wrote your own spherical FFT routine? For any particular cubiod array input indices (I,J,K), what location is mapped to in your array that you put through your FFT routine? I presume here that the FFT routine puts its results into exactly the same logical shape as what was passed to it? If so then you should then be able to reverse the process to map the outputs back to cubiod array indices. Not using sphere(), just based on the exact reverse of the mapping that was used in the input processing. Once the FFT values are mapped back to cubiod array locations, we can proceed to do a voxel viewing or spherical surface generation.
Bran
Bran le 20 Jan 2013
Hi there well yea my samples were taken of coordinates that are arranged in a spherical volume. However a map of the points of the surface where the colour reflects the value of the points would be enough. Yea the FFT routine retains the shape of the input, so for example if I simply use scatter all the points can be seen. But it's difficult to see a peak in the middle thats in red amongst densely packed blue points so I was thinking to just show the peak at the surface. The suggestion is really good but how would I go about coding for this?
as I say I dont need to go back to the original locations as the output is already in the correct locations. Hence I just need to use the points at the surface to draw the sphere and then somehow use the FFT vlaues at the points to map for colour?? What do you reckon?? PS I really appreciate you taking so much time Walter!!!! :)

Connectez-vous pour commenter.

Réponses (0)

Question posée :

le 18 Jan 2013

Community Treasure Hunt

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

Start Hunting!

Translated by