How to multiplicate two block matrices with following conditions?

4 views (last 30 days)
I have a block diagonal matrix P with size 500*500 like this
P=[A 0 0
0 A 0
0 0 A...
... ];
each element A on the diagonal is a (m*n) matrix and there are T number of these matrices. (i.e. There are T elements on the diagonal and T is a large number like 500) I want to multiply each diagonal element(which is a matrix), with one of the elements of another block matrix V that is like this:
V=[B1;B2;...,BT]
%there are again so many Bi; (T=500);
%Each Bi is a (n*1) vector
Each A on the diagonal should be multiplied to the corresponding B.
In other words we want to calculate a block by block multiplication. One block of matrix P is multiplied by the corresponding block of V. Although A is (m*n) and Bi is (n*1), but when we do P*V, it gives this Error: "Inner matrix dimensions must agree."
  2 Comments
James Tursa
James Tursa on 14 Feb 2017
"... I want to multiply each diagonal element(which is a matrix), with each one of the elements of another block matrix ... "
"... There exists one A for each B ..."
So, which is it? Multiply each A by each B, or multiply only one A for each B? Can you write down in pseudo-code what the result would look like?
sn at
sn at on 14 Feb 2017
Multiply each A by each B, But there are 500 of these pairs A and Bi.
the answer will almost be like this:
[y1;y2;...;y500] in which yi=A*Bi.
A is (m*n) and each Bi is n*1;
There will be 500 matrices yi which are (m*1) each.

Sign in to comment.

Answers (1)

sn at
sn at on 14 Feb 2017
Edited: sn at on 14 Feb 2017
I found a file named block diagonal multiplication by David Holdaway in File Exchange. This function is Used for multiplying large block diagonal matrices with matrices / vectors. I think I will need this.
 

Categories

Find more on Operating on Diagonal Matrices 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!