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

2 次查看(过去 30 天)
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);

采纳的回答

Guillaume
Guillaume 2019-9-9
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 个评论
Anna M
Anna M 2019-9-9
编辑:Anna M 2019-9-9
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

请先登录,再进行评论。

更多回答(0 个)

Community Treasure Hunt

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

Start Hunting!

Translated by