Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have two tensors that i must calculate double dot product. matrix A is rank 2 and matrix B is rank 4. I want to multiply them with Matlab and I know in Matlab it becomes: A : B = trace (A*B) but it has one error and it says: Inner matrix dimensions must agree So how can I solve this problem? anybody help me? Thanks

share|cite|improve this question
What size are A and B? – apnorton Jul 2 '13 at 15:46
A is 3*3 and B is 6*6 – Sara sky Jul 2 '13 at 19:18

I think you can only calculate this explictly if you have dyadic- and polyadic-product forms of your two tensors, i.e., A = a b and B = c d e f, where a, b, c, d, e, f are vectors. Beware that there are two definitions for double dot product, even for matrices both of rank 2: (a b) : (c d) = (a.c) (b.d) or (a.d) (b.c), where "." is the usual single-dot scalar product for vectors. One possible answer would thus be (a.c) (b.d) (e f); another would be (a.d) (b.c) (e f), i.e., a matrix of rank 2 in any case. Of course A:B $\not =$ B:A in general, if A and B do not have same rank, so be careful in which order you wish to double-dot them as well.

share|cite|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.