How to extract elements from each dimension of a 3D matrix and put it in a vector.

2 visualizzazioni (ultimi 30 giorni)
I have a 3D matrix that is
B = (31, 37, 91);
I would like to extract all the elements from each dimension, and place it in a vector, then take the variance of the vector.
In the end, I would like to make a vector of all of the variances.
For example,
C = [Var1; Var2; ... Var91];
Below is what I have tried so far, but I am curious if there is a way without doing each dimension individually.
Thanks in advance!
F1 = B(:,:,1);
F1v = F1(:); %vector
Var1 = var(F1v);
F2 = B(:,:,2);
F2v = F2(:); %vector
Var2 = var(F2v);

Risposta accettata

Guillaume
Guillaume il 9 Set 2019
Sure, you just have to type the same code 91 times...
As you can guess, that's not a viable approach. If you start numbering variables, you're doing it wrong.
If you're on R2018b or later, it's trivial to obtain your vector:
V = var(B, 0, [1 2]); %requires R2018b or later
Optionally, you can squeeze the result, but having a vector along the page makes more sense.
In earlier versions, var can only operate on one dimension at once, so you must first reshape your matrix into an Nx91 matrix:
V = var(reshape(B, [], size(B, 3)))
  1 Commento
Anna M
Anna M il 9 Set 2019
Modificato: Anna M il 9 Set 2019
Thanks! The reason I am numbering my variables is because I use the individual vectors of each dimension in other calculations. However, I am a beginner, so I am working on consicing my code and becoming less redundant..
Your suggestion gave me exactly what I needed. I do have a question, what does the [1 2] mean in: V = var(B, 0, [1 2]);
I did not want to use that if I did not fully understand.
Edit*: I see it now! I read it means for dimensions 1 and 2. Thanks again

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by