Need help subtracting certain vector indices from every matrix element in a page (without using for loop)

2 views (last 30 days)
Hey! I have a problem that seems very easy, but for some reason I cannot manage to do it. (I don't want to use for loops thought, for optimization)
I have:
  • matrix of 15x15x500 containing random values, let's say:
A = randn(15x15x500)
  • vector containing different values of 1x500, let's say:
B = randn(1x500)
I want to subtract the values of the vector from every element of every page of the matrix that has the same index.
So something like this (which does not work of course):
C = minus(A,B,'all')
Meaning that if the page with index 450 of A would be all 15x15 of 5's, and the value of vector B with index 450 would be a 2, the 450th page of C would now be all 3's.
Is this possible using matrix operations and not a for loop?
Thanks in advance!

Answers (1)

Kevin Jansen
Kevin Jansen on 22 Feb 2022
I just found it out!
a = randn(15,15,500)
b = randn(1,500)
c = reshape(a,[225 500])
d = c - b
e = reshape(d,[15 15 500])

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!