The multiplication of list of matricesexporting 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
Is there a RAID 0 Equivalent for RAM?
How does electrical safety system work on ISS?
Can I cause damage to electrical appliances by unplugging them when they are turned on?
Can you use Vicious Mockery to win an argument or gain favours?
How much of a Devil Fruit must be consumed to gain the power?
Taxes on Dividends in a Roth IRA
What is going on with gets(stdin) on the site coderbyte?
Can I say "fingers" when referring to toes?
"It doesn't matter" or "it won't matter"?
C++ copy constructor called at return
Has any country ever had 2 former presidents in jail simultaneously?
The IT department bottlenecks progress, how should I handle this?
Non-trope happy ending?
Why do ¬, ∀ and ∃ have the same precedence?
Doesn't the system of the Supreme Court oppose justice?
What is the highest possible scrabble score for placing a single tile
How to make money from a browser who sees 5 seconds into the future of any web page?
Did the UK lift the requirement for registering SIM cards?
Why is it that I can sometimes guess the next note?
What is the English pronunciation of "pain au chocolat"?
Permission on Database
PTIJ: Why is Haman obsessed with Bose?
When were female captains banned from Starfleet?
Which Article Helped Get Rid of Technobabble in RPGs?
The multiplication of list of matrices
exporting 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
2 days ago
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,1761535
4,1761535
$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
2 days ago
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
2 days ago
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 2 days ago
answered Mar 18 at 23:36
Henrik SchumacherHenrik Schumacher
57.4k578158
57.4k578158
$begingroup$
Thank you very much!
$endgroup$
– Ghady
Mar 19 at 0:31
$begingroup$
You're welcome.
$endgroup$
– Henrik Schumacher
2 days ago
add a comment |
$begingroup$
Thank you very much!
$endgroup$
– Ghady
Mar 19 at 0:31
$begingroup$
You're welcome.
$endgroup$
– Henrik Schumacher
2 days ago
$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
2 days ago
$begingroup$
You're welcome.
$endgroup$
– Henrik Schumacher
2 days ago
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