How to extract elements from each dimension of a 3D matrix and put it in a vector.
1 次查看(过去 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);
0 个评论
采纳的回答
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)))
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!