Multiplication of Array of Matrices with Array of scalars

4 次查看(过去 30 天)
Hello, can anyone help me ? I did some operations with scalar matrix: Example:
A= [1 2 3 4 5];
C= [0.5 0.25 0 0 0.25; 0.25 0.5 0.25 0 0; 0 0.25 0.5 0.25 0; 0 0 0.25 0.5 0.25; 0.25 0 0 0.25 0.5];
A*C=[ 2.25 2 3 4 3.75]; % usual in matrix multiplication
Now my task is to change A elements into 2x2 matrices and then to do the same operation, for example, C is the same matrix:
AA= [ [1.75 4;-0.25 -0.25] [1.55 4;-0.25 -0.45] [1.75 4;-0.25 -0.25 ] [1.65 4;-0.25 -0.35] [1.15 4;-0.25 -0.85]];
% I construct this as a cell array AA is cell 1x5, where each variable is a 2x2 matrix
I want to multiply each variable in a cell array (which is a 2x2 matrix) coefficients in C, if to make clear, the multiplication should be performed like this;
AA*C = [ [1.75 4;-0.25 -0.25]*0.5+ [1.55 4;-0.25 -0.45] *0.25+0+0+[1.15 4;-0.25 -0.85]*0.25
[1.75 4;-0.25 -0.25]*0.25 +[1.55 4;-0.25 -0.45]*0.5+ [1.75 4;-0.25 -0.25 ]*0.25+0+0
0+[1.55 4;-0.25 -0.45] *0.25+[1.75 4;-0.25 -0.25 ]*0.5+[1.65 4;-0.25 -0.35]*0.25+0
0+0+[1.75 4;-0.25 -0.25 ]*0.25+[1.65 4;-0.25 -0.35]*0.5+[1.15 4;-0.25 -0.85]*0.25
[1.75 4;-0.25 -0.25] *0.25 +0+0+[1.65 4;-0.25 -0.35]*0.5+[1.15 4;-0.25 -0.85]*0.25 ];
How can I get this – to preserve usual matrix operation? Thank You.
  2 个评论
Stephen23
Stephen23 2018-3-10
"I did some operations with scalar matrix"
A scalar matrix would have size 1x1x1x1x..., but I don't see any matrices in your code with that size. What are you referring to?
Rasa Smith
Rasa Smith 2018-3-12
编辑:Rasa Smith 2018-3-12
Hello, I mean I have usual matrices A(1x5) and C(5x5) (in my real task it is not 5 but e.g. 10000). I multiply A*C as usual, the product A*C has format 1x5. In my real task I want to multiply AA (format 1x5 - which is a matrix of five matrices of format 2x2) by the same C (format 5x5) so that the product produces the result - 1x5 format matrix where each element is a 2x2 matrix. In other words, the task I want to perform has to give me a result - multiplication as matrix by scalar and then to sum, e.g. the first element of AA*C should be calculated:
[1.75 4;-0.25 -0.25]*0.5 +
[1.55 4;-0.25 -0.45]*0.25+
[1.75 4;-0.25 -0.25 ]*0+
[1.65 4;-0.25 -0.35]*0+
[1.15 4;-0.25 -0.85]*0.25
Then in my case the product of AA*C should be:
[ [1.55 4; -0.25 -0.45]
[1.65 4; -0.25 -0.35]
[1.675 4; -0.25 -0.325]
[1.55 4; -0.25 -0.45]
[1.425 4; -0.25 -0.575] ];
I hope I made it more easy to understand:) Thank you.

请先登录,再进行评论。

回答(1 个)

Ahmet Cecen
Ahmet Cecen 2018-3-10
I believe you are over-complicating your problem by thinking as if you are working things out on a board. Your operation is separable and doesn't need you to store things in a cell array or represent them as matrices. From the exact assignment of AA in your question as an array:
AA = reshape(AA, 4,5);
Now each of your "matrices" is a column. Where:
AA*C(1,:)'
will give you first row of AA*C. If you have to return a matrix:
reshape(AA*C(1,:)',2,2);
Now you can loop over this to solve your problem. You can also store C as a cell instead and use cellfun, but shouldn't be necessary in your case.

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by