Vectorized operations on multidimensional arrays
5 views (last 30 days)
Show older comments
Hi,
Say, there is 3D array a:
a(:,:,1) =
56 123
48 242
a(:,:,2) =
206 30
188 26
a(:,:,3) =
251 138
167 8
And 3D array m:
m(:,:,1) =
117.2500
m(:,:,2) =
112.5000
m(:,:,3) =
141
How do I subtract m(:,:,1:3) from a(:,:,1:3) in a vectorized manner? I.e. do something like
for k=1:length(a), res(:,:,k)=a(:,:,k)-m(:,:,k); end
The result should be:
res(:,:,1) =
-61.2500 5.7500
-69.2500 124.7500
res(:,:,2) =
93.5000 -82.5000
75.5000 -86.5000
res(:,:,3) =
110 -3
26 -133
Thank you!
0 Comments
Accepted Answer
Andrei Bobrov
on 7 Feb 2012
res = bsxfun(@minus,a,m)
3 Comments
Andrei Bobrov
on 7 Feb 2012
res = bsxfun(@minus,a,reshape(m,1,1,[]))
or
res = bsxfun(@minus,a,permute(m,[1 3 2]))
please read:
http://www.mathworks.com/help/techdoc/ref/reshape.html
http://www.mathworks.com/help/techdoc/ref/permute.html
More Answers (0)
See Also
Categories
Find more on Matrix Indexing 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!