The multiplication of list of matrices The Next CEO of Stack Overflowexporting list of matrices in mathematicaMatrix multiplicationEasy way to perform multiplication of two 2x2 matrices, that contain list elements?Multiplying block matricesMatrix multiplication for higher dimensional matricesMultiply a matrix by a vectorouter product of matricesAdding two matrices together results in a weird resultMultiply two listsUsing ReplaceAll on matrix to produce new list of complete matrices
Why didn't Khan get resurrected in the Genesis Explosion?
Would a completely good Muggle be able to use a wand?
Can we say or write : "No, it'sn't"?
Reference request: Grassmannian and Plucker coordinates in type B, C, D
Axiom Schema vs Axiom
Powershell. How to parse gci Name?
Is French Guiana a (hard) EU border?
Why is information "lost" when it got into a black hole?
A Man With a Stainless Steel Endoskeleton (like The Terminator) Fighting Cloaked Aliens Only He Can See
Should I cite using beginthebibliography or beginfilecontents*
Chain wire methods together in Lightning Web Components
Writing differences on a blackboard
Why did CATV standarize in 75 ohms and everyone else in 50?
Where do students learn to solve polynomial equations these days?
How many extra stops do monopods offer for tele photographs?
How a 64-bit process virtual address space is divided in Linux?
Some questions about different axiomatic systems for neighbourhoods
Domestic-to-international connection at Orlando (MCO)
Is it possible to replace duplicates of a character with one character using tr
Method for adding error messages to a dictionary given a key
Recycling old answers
Why do airplanes bank sharply to the right after air-to-air refueling?
Help understanding this unsettling image of Titan, Epimetheus, and Saturn's rings?
Flying from Cape Town to England and return to another province
The multiplication of list of matrices
The Next CEO of Stack Overflowexporting list of matrices in mathematicaMatrix multiplicationEasy way to perform multiplication of two 2x2 matrices, that contain list elements?Multiplying block matricesMatrix multiplication for higher dimensional matricesMultiply a matrix by a vectorouter product of matricesAdding two matrices together results in a weird resultMultiply two listsUsing ReplaceAll on matrix to produce new list of complete matrices
$begingroup$
I need to multiply 3 lists of matrices (b.a.b) as the following code
a = -17.8227277373099`, -1.6565234964560602`,
-1.6565234954649242`,
5.298073701591974`, -17.812203521929003`,
-1.5013126607114478`, -1.5013126574896714`,
4.384050851253119`, -17.801677045750512`,
-1.4055541329078751`, -1.405554138172727`,
3.869511752542245`;
b = 0.8409518416651456`, 0, 0,
0.1274293000222242`, 0.8409815693580924`, 0, 0,
0.14187218616724442`, 0.841011296000238`, 0, 0,
0.15290209433231844`;
I used the following:
mat = b.a.b
But, I think this way is not correct because I didn't get the result. Also, I make a test for the first matrices as the following code, that what I wanted to get for the whole matrices multiplication.
a1 = -17.8227277373099`, -1.6565234964560602`,
-1.6565234954649242`, 5.298073701591974`;
b1 = 0.8409518416651456`, 0, 0, 0.1274293000222242`;
mat1 = b1.a1.b1
-12.6042, -0.177516, -0.177516, 0.0860313
Thanks.
list-manipulation matrix
$endgroup$
add a comment |
$begingroup$
I need to multiply 3 lists of matrices (b.a.b) as the following code
a = -17.8227277373099`, -1.6565234964560602`,
-1.6565234954649242`,
5.298073701591974`, -17.812203521929003`,
-1.5013126607114478`, -1.5013126574896714`,
4.384050851253119`, -17.801677045750512`,
-1.4055541329078751`, -1.405554138172727`,
3.869511752542245`;
b = 0.8409518416651456`, 0, 0,
0.1274293000222242`, 0.8409815693580924`, 0, 0,
0.14187218616724442`, 0.841011296000238`, 0, 0,
0.15290209433231844`;
I used the following:
mat = b.a.b
But, I think this way is not correct because I didn't get the result. Also, I make a test for the first matrices as the following code, that what I wanted to get for the whole matrices multiplication.
a1 = -17.8227277373099`, -1.6565234964560602`,
-1.6565234954649242`, 5.298073701591974`;
b1 = 0.8409518416651456`, 0, 0, 0.1274293000222242`;
mat1 = b1.a1.b1
-12.6042, -0.177516, -0.177516, 0.0860313
Thanks.
list-manipulation matrix
$endgroup$
1
$begingroup$
Table[b[[i]].a[[i]].b[[i]], i, 1, 3]
or#[[2]].#[[1]].#[[2]] & /@ Transpose[a, b]
.
$endgroup$
– corey979
Mar 18 at 21:06
$begingroup$
Thanks a lot corey979!
$endgroup$
– Ghady
Mar 19 at 0:30
add a comment |
$begingroup$
I need to multiply 3 lists of matrices (b.a.b) as the following code
a = -17.8227277373099`, -1.6565234964560602`,
-1.6565234954649242`,
5.298073701591974`, -17.812203521929003`,
-1.5013126607114478`, -1.5013126574896714`,
4.384050851253119`, -17.801677045750512`,
-1.4055541329078751`, -1.405554138172727`,
3.869511752542245`;
b = 0.8409518416651456`, 0, 0,
0.1274293000222242`, 0.8409815693580924`, 0, 0,
0.14187218616724442`, 0.841011296000238`, 0, 0,
0.15290209433231844`;
I used the following:
mat = b.a.b
But, I think this way is not correct because I didn't get the result. Also, I make a test for the first matrices as the following code, that what I wanted to get for the whole matrices multiplication.
a1 = -17.8227277373099`, -1.6565234964560602`,
-1.6565234954649242`, 5.298073701591974`;
b1 = 0.8409518416651456`, 0, 0, 0.1274293000222242`;
mat1 = b1.a1.b1
-12.6042, -0.177516, -0.177516, 0.0860313
Thanks.
list-manipulation matrix
$endgroup$
I need to multiply 3 lists of matrices (b.a.b) as the following code
a = -17.8227277373099`, -1.6565234964560602`,
-1.6565234954649242`,
5.298073701591974`, -17.812203521929003`,
-1.5013126607114478`, -1.5013126574896714`,
4.384050851253119`, -17.801677045750512`,
-1.4055541329078751`, -1.405554138172727`,
3.869511752542245`;
b = 0.8409518416651456`, 0, 0,
0.1274293000222242`, 0.8409815693580924`, 0, 0,
0.14187218616724442`, 0.841011296000238`, 0, 0,
0.15290209433231844`;
I used the following:
mat = b.a.b
But, I think this way is not correct because I didn't get the result. Also, I make a test for the first matrices as the following code, that what I wanted to get for the whole matrices multiplication.
a1 = -17.8227277373099`, -1.6565234964560602`,
-1.6565234954649242`, 5.298073701591974`;
b1 = 0.8409518416651456`, 0, 0, 0.1274293000222242`;
mat1 = b1.a1.b1
-12.6042, -0.177516, -0.177516, 0.0860313
Thanks.
list-manipulation matrix
list-manipulation matrix
asked Mar 18 at 20:56
GhadyGhady
696
696
1
$begingroup$
Table[b[[i]].a[[i]].b[[i]], i, 1, 3]
or#[[2]].#[[1]].#[[2]] & /@ Transpose[a, b]
.
$endgroup$
– corey979
Mar 18 at 21:06
$begingroup$
Thanks a lot corey979!
$endgroup$
– Ghady
Mar 19 at 0:30
add a comment |
1
$begingroup$
Table[b[[i]].a[[i]].b[[i]], i, 1, 3]
or#[[2]].#[[1]].#[[2]] & /@ Transpose[a, b]
.
$endgroup$
– corey979
Mar 18 at 21:06
$begingroup$
Thanks a lot corey979!
$endgroup$
– Ghady
Mar 19 at 0:30
1
1
$begingroup$
Table[b[[i]].a[[i]].b[[i]], i, 1, 3]
or #[[2]].#[[1]].#[[2]] & /@ Transpose[a, b]
.$endgroup$
– corey979
Mar 18 at 21:06
$begingroup$
Table[b[[i]].a[[i]].b[[i]], i, 1, 3]
or #[[2]].#[[1]].#[[2]] & /@ Transpose[a, b]
.$endgroup$
– corey979
Mar 18 at 21:06
$begingroup$
Thanks a lot corey979!
$endgroup$
– Ghady
Mar 19 at 0:30
$begingroup$
Thanks a lot corey979!
$endgroup$
– Ghady
Mar 19 at 0:30
add a comment |
2 Answers
2
active
oldest
votes
$begingroup$
Using MapThread
and Dot
:
MapThread[Dot, b, a, b]
$endgroup$
$begingroup$
Thank you very much, It is the easiest!
$endgroup$
– Ghady
Mar 19 at 0:33
add a comment |
$begingroup$
If you need it really fast, then use Compile
:
n = 1000000;
a = RandomReal[-1, 1, n, 2, 2];
b = RandomReal[-1, 1, n, 2, 2];
cf = Compile[a, _Real, 2, b, _Real, 2,
b.a.b,
RuntimeAttributes -> Listable,
Parallelization -> True
];
MapThread[Dot, b, a, b]; // AbsoluteTiming // First
cf[a, b]; // AbsoluteTiming // First
1.46343
0.075722
$endgroup$
$begingroup$
Thank you very much!
$endgroup$
– Ghady
Mar 19 at 0:31
$begingroup$
You're welcome.
$endgroup$
– Henrik Schumacher
Mar 19 at 8:00
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
);
);
, "mathjax-editing");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "387"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f193512%2fthe-multiplication-of-list-of-matrices%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
Using MapThread
and Dot
:
MapThread[Dot, b, a, b]
$endgroup$
$begingroup$
Thank you very much, It is the easiest!
$endgroup$
– Ghady
Mar 19 at 0:33
add a comment |
$begingroup$
Using MapThread
and Dot
:
MapThread[Dot, b, a, b]
$endgroup$
$begingroup$
Thank you very much, It is the easiest!
$endgroup$
– Ghady
Mar 19 at 0:33
add a comment |
$begingroup$
Using MapThread
and Dot
:
MapThread[Dot, b, a, b]
$endgroup$
Using MapThread
and Dot
:
MapThread[Dot, b, a, b]
answered Mar 18 at 21:21
swishswish
4,1811536
4,1811536
$begingroup$
Thank you very much, It is the easiest!
$endgroup$
– Ghady
Mar 19 at 0:33
add a comment |
$begingroup$
Thank you very much, It is the easiest!
$endgroup$
– Ghady
Mar 19 at 0:33
$begingroup$
Thank you very much, It is the easiest!
$endgroup$
– Ghady
Mar 19 at 0:33
$begingroup$
Thank you very much, It is the easiest!
$endgroup$
– Ghady
Mar 19 at 0:33
add a comment |
$begingroup$
If you need it really fast, then use Compile
:
n = 1000000;
a = RandomReal[-1, 1, n, 2, 2];
b = RandomReal[-1, 1, n, 2, 2];
cf = Compile[a, _Real, 2, b, _Real, 2,
b.a.b,
RuntimeAttributes -> Listable,
Parallelization -> True
];
MapThread[Dot, b, a, b]; // AbsoluteTiming // First
cf[a, b]; // AbsoluteTiming // First
1.46343
0.075722
$endgroup$
$begingroup$
Thank you very much!
$endgroup$
– Ghady
Mar 19 at 0:31
$begingroup$
You're welcome.
$endgroup$
– Henrik Schumacher
Mar 19 at 8:00
add a comment |
$begingroup$
If you need it really fast, then use Compile
:
n = 1000000;
a = RandomReal[-1, 1, n, 2, 2];
b = RandomReal[-1, 1, n, 2, 2];
cf = Compile[a, _Real, 2, b, _Real, 2,
b.a.b,
RuntimeAttributes -> Listable,
Parallelization -> True
];
MapThread[Dot, b, a, b]; // AbsoluteTiming // First
cf[a, b]; // AbsoluteTiming // First
1.46343
0.075722
$endgroup$
$begingroup$
Thank you very much!
$endgroup$
– Ghady
Mar 19 at 0:31
$begingroup$
You're welcome.
$endgroup$
– Henrik Schumacher
Mar 19 at 8:00
add a comment |
$begingroup$
If you need it really fast, then use Compile
:
n = 1000000;
a = RandomReal[-1, 1, n, 2, 2];
b = RandomReal[-1, 1, n, 2, 2];
cf = Compile[a, _Real, 2, b, _Real, 2,
b.a.b,
RuntimeAttributes -> Listable,
Parallelization -> True
];
MapThread[Dot, b, a, b]; // AbsoluteTiming // First
cf[a, b]; // AbsoluteTiming // First
1.46343
0.075722
$endgroup$
If you need it really fast, then use Compile
:
n = 1000000;
a = RandomReal[-1, 1, n, 2, 2];
b = RandomReal[-1, 1, n, 2, 2];
cf = Compile[a, _Real, 2, b, _Real, 2,
b.a.b,
RuntimeAttributes -> Listable,
Parallelization -> True
];
MapThread[Dot, b, a, b]; // AbsoluteTiming // First
cf[a, b]; // AbsoluteTiming // First
1.46343
0.075722
edited Mar 19 at 8:00
answered Mar 18 at 23:36
Henrik SchumacherHenrik Schumacher
58.6k581162
58.6k581162
$begingroup$
Thank you very much!
$endgroup$
– Ghady
Mar 19 at 0:31
$begingroup$
You're welcome.
$endgroup$
– Henrik Schumacher
Mar 19 at 8:00
add a comment |
$begingroup$
Thank you very much!
$endgroup$
– Ghady
Mar 19 at 0:31
$begingroup$
You're welcome.
$endgroup$
– Henrik Schumacher
Mar 19 at 8:00
$begingroup$
Thank you very much!
$endgroup$
– Ghady
Mar 19 at 0:31
$begingroup$
Thank you very much!
$endgroup$
– Ghady
Mar 19 at 0:31
$begingroup$
You're welcome.
$endgroup$
– Henrik Schumacher
Mar 19 at 8:00
$begingroup$
You're welcome.
$endgroup$
– Henrik Schumacher
Mar 19 at 8:00
add a comment |
Thanks for contributing an answer to Mathematica Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f193512%2fthe-multiplication-of-list-of-matrices%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
$begingroup$
Table[b[[i]].a[[i]].b[[i]], i, 1, 3]
or#[[2]].#[[1]].#[[2]] & /@ Transpose[a, b]
.$endgroup$
– corey979
Mar 18 at 21:06
$begingroup$
Thanks a lot corey979!
$endgroup$
– Ghady
Mar 19 at 0:30