How to multiplicate two block matrices with following conditions?

2 次查看(过去 30 天)
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 个评论
James Tursa
James Tursa 2017-2-14
"... 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 2017-2-14
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.

请先登录,再进行评论。

回答(1 个)

sn at
sn at 2017-2-14
编辑:sn at 2017-2-14
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.
 

类别

Help CenterFile Exchange 中查找有关 Operating on Diagonal Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by