Plotting a 3D matrix with plot3

I have 3 Matrices .
P = rand (2,2,3) ; % row=2, col =2, slice (z axis) =3
Q = rand (1,2);
R = rand (1,2);
I want to plot the Matrix P with corresonponding to Q and R matrix in such a way that :
In 3 dimensional plot => X axis : Q Matrix ; Y axis : R Matrix ; Z axis =P Matrix.
Thank you for your kind help !

6 comentarios

Walter Roberson
Walter Roberson el 21 de Sept. de 2022
Your X axis, Q, is 2 elements long. Your Y axis, R, is 2 elements long. Your Z axis, P, is 2 x 2 x 3.
We could guess that you might want each combination of element of Q with each element of R to define 2 x 2, but that leaves you with 3 values for each location, and you have not defined a meaning for that. For example is it 3 independent 2 x 2 surfaces?
Amit Chakraborty
Amit Chakraborty el 21 de Sept. de 2022
@Walter Roberson Using the value from Q and R , P matrix was generated.
So, I do not think P matix is independednt (though I am confused).
"you might want each combination of element of Q with each element of R to define 2 x 2, but that leaves you with 3 values for each location" This is what I meant actually.
Thank you for your reply.
You have three values for each location. How would you like the plot for that to be represented?
For example do you want the first value to be converted into Red component, the second value to be converted into Green component, and the third value to be converted into Blue component of a face?
P = rand (2,2,3) ; % row=2, col =2, slice (z axis) =3
Q = rand (1,2);
R = rand (1,2);
[Qg, Rg] = ndgrid(Q, R);
dotsize = 100;
scatter(Qg(:), Rg(:), dotsize, reshape(P, [], 3), 'filled' )
Bjorn Gustavsson
Bjorn Gustavsson el 21 de Sept. de 2022
With so few points to plot scatter3 might be the most straight-forward way to present this result. In addition to direct conversion to RGB-tripplets one could also consider using size for one of the components and use some combination of hue saturation and intensity/value for the other two. Exactly what is best for your data depends entirely on what P is.
Amit Chakraborty
Amit Chakraborty el 22 de Sept. de 2022
Editada: Amit Chakraborty el 22 de Sept. de 2022
So, I am giving the original matrix size of all the three vectors.
LambdaL = linspace(0.000001,0.0001,20); % [Matrix in X axis]
LambdaT = linspace(0.000001,0.0001,20); % [Matrix in Y axis]
slices = [1 2 3 4 5]; % [Matrix in Z axis]
The Final Resultant matrix P : rand(20,20,5)
Consider that Using LambdaL and LamdaT the matrix P is generated.
My plot should be like that :
1) in X-axis: LambdaL value should be there
2) in Y-axis: LambdaT value should be there
3) in Z axis : The value inside matrix P should be plotted.
So in short, for Slice no. 1 there will be 20x20 value , Same for Slice no. 2- Slice no. 5
Sorry, if I made confusion. Thank you both for your reply.
Walter Roberson
Walter Roberson el 22 de Sept. de 2022
See slice

Iniciar sesión para comentar.

Respuestas (1)

KSSV
KSSV el 22 de Sept. de 2022
LambdaL = linspace(0.000001,0.0001,20); % [Matrix in X axis]
LambdaT = linspace(0.000001,0.0001,20); % [Matrix in Y axis]
z = [1 2 3 4 5]; % [Matrix in Z axis]
[LL,LT,Z] = meshgrid(LambdaL,LambdaT,z) ;
P = rand(20,20,5) ;
% plot plane at x = .000001
slice(LL,LT,Z,P,LambdaL(1),[],[])
% plot plane at x = .000001 and y = 0.0001
slice(LL,LT,Z,P,LambdaL(1),LambdaT(end),[])
% plot all planes along x
slice(LL,LT,Z,P,LambdaL,[],[])

1 comentario

Sometimes I have had success with manipulating the "alpha" properties of the surfaces slice generates:
phSl = slice(LL,LT,Z,P,LambdaL,[],[]);
set(phSl,'FaceAlpha',0.7)
shading flat
If that type of visualization is what you're after matlab is a bit lacking, and the best software I've encountered is vis5d - which is an open software project that does this type of volume renderings, primarily for weather-data.

Iniciar sesión para comentar.

Productos

Etiquetas

Preguntada:

el 21 de Sept. de 2022

Comentada:

el 22 de Sept. de 2022

Community Treasure Hunt

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

Start Hunting!

Translated by