fastest way to apply A\B on each matrix page

2 views (last 30 days)
I would like to find an efficient fast way for calculating:
for i = 1:n
X(:,:,i) = A(:,:,i)\B(:,:,i)
where A and B are 10*10*n, and 10*1*n size matrices respectively. the matrices are large and must be called meny times. therefore I was thinking of replacing "for loops" with a faster way that does it very fast and not iteratively.

Accepted Answer

Bruno Luong
Bruno Luong on 17 Aug 2020
Edited: Bruno Luong on 17 Aug 2020
Why insist on ARRAYFUN, your for-loop is perfectly fine. ARRAYFUN is a "vectoriztion" scam.
n = 100;
A = rand(10,10,n);
B = rand(10,1,n);
X = arrayfun(@(p) A(:,:,p)\B(:,:,p), 1:n, 'unif', 0);
X = cat(3,X{:});
hosein Javan
hosein Javan on 17 Aug 2020
I studied your MultiSolver. it was using concatenation diagonally and make a sparse matrix as I said. I see there's no better way. however ur using of repmat and rehsape was something speedy to extract unknowns without loops. I accept your answer. thanks, but I'd like to mention once more that it was misunderstanding. please don't use words like "big scam". thanks again.

Sign in to comment.

More Answers (0)


Find more on Linear Algebra 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!