フィルターのクリア

Multiply a "stack" of matrices with a "stack" of vectors

4 ビュー (過去 30 日間)
Michael
Michael 2014 年 3 月 4 日
コメント済み: James Tursa 2014 年 3 月 7 日
I have a matrix 2 x 2 x n and a vector 2 x n. So basically, I have n layers of 2 x 2 matrices and n layers of vectors with 2 entries. I d like to do a matrix-vector multiplication on each layer.
I could easily do this using a for loop, but is there a way which directly supports such an operation?

採用された回答

Jos (10584)
Jos (10584) 2014 年 3 月 4 日
編集済み: Jos (10584) 2014 年 3 月 7 日
One option:
n = 6
% M is your 2x2xn array of "matrices
M = rand(2,2,n)
% V is your 2xn array of "vectors"
V = rand(2,n)
fh = @(k) M(:,:,k) * V(:,k)
C = arrayfun(fh,1:n,'un',0)
C2 = cat(3,C{:})
Corrected.
  3 件のコメント
Jos (10584)
Jos (10584) 2014 年 3 月 7 日
You did ask for " a way which directly supports such an operation ", not for a faster way! ;-)
To be honest, I think a straight forward for-loop is as good as the accumarray approach in this case.
James Tursa
James Tursa 2014 年 3 月 7 日
If you want speed, I would suggest looking at one of the solutions I have posted.

サインインしてコメントする。

その他の回答 (1 件)

James Tursa
James Tursa 2014 年 3 月 4 日
編集済み: James Tursa 2014 年 3 月 7 日

カテゴリ

Help Center および File ExchangeCreating and Concatenating Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by