Create a 3D Martix by operation of 1D vector on 2D matrix, using cat()
1 view (last 30 days)
Show older comments
James Freeman
on 25 Jul 2014
Commented: James Freeman
on 25 Jul 2014
Given a 2D matrix A, and a 1D vector B, I would like to create a 3D Martix, with 2D slices of A minus each element of B.
So for a B of length 4, this works:
cat(3, A-B(1), A-B(2), A-B(3), A-B(4)))
The actual dimensions will be around A(40000,7), B(150), so I need to be able to do this for a given size of B
0 Comments
Accepted Answer
Kelly Kearney
on 25 Jul 2014
A = rand(10,5);
B = 1:3;
C = bsxfun(@minus, A, permute(B, [3 1 2]));
If B is a column vector (instead of a row vector), the permute would be
C = bsxfun(@minus, A, permute(B, [3 2 1]));
More Answers (0)
See Also
Categories
Find more on Cell Arrays in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!