Date: Mar 15, 2012 12:10 PM
Author: Milos Milenkovic
Subject: Special matrix multiplication
Dear all,

Recently I had a problem like this

suppose that we have two matrices, where each element has three values like follows:

>

> A=[(a1,b1,c1), (a2,b2,c2); (a3,b3,c3), (a4,b4,c4)]

> B=[(d1,e1,f1), (d2,e2,f2); (d3,e3,f3), (d4,e4,f4)]

>

> Now, I have to multiply these two matrices, and that is matrix C=A*B

>

> C=[ c11=(a1,b1,c1)*(d1,e1,f1)+(a2,b2,c2)*(d3,e3,f3), c12=(a1,b1,c1)*(d2,e2,f2)+(a2,b2,c2)*(d4,e4,f4); c21=(a3,b3,c3)*(d1,e1,f1)+(a4,b4,c4)*(d3,e3,f3), c22=(a3,b3,c3)*(d2,e2,f2)+(a4,b4,c4)*(d4,e4,f4)]

>

> where the most important here is the low for multiplying these three-value numbers is:

>

> (ai,bi,ci)*(di,ei,fi) = (bi*di+ei*(ai-bi), bi*ei , ei*ci+bi(fi-ei))

and we (Roger S.) solved it as follows:

A1 = A(:,1:3:n); A2 = A(:,2:3:n); A3 = A(:,3:3:n);

B1 = B(:,1:3:n); B2 = B(:,2:3:n); B3 = B(:,3:3:n);

C1 = A2*B1+(A1-A2)*B2; C2 = A2*B2; C3 = A3*B2+A2*(B3-B2);

C(:,3:3:end) = C3; C(:,2:3:end) = C2; C(:,1:3:end) = C1;

This is ok, but now I have to make this multiplication with respect to sign of these (ai,bi,ci) numbers, so if (ai,bi,ci) and (di,ei,fi) are >0 (they are >0, if bi and ei >0) then the upper solution is ok,

but when bi or ei is <0 than I have to apply next rule:

(ai,bi,ci)*(di,ei,fi) = (ei*ai+bi*(fi-ei), bi*ei , ei*ci+bi(di-ei))

Or, if (ai,bi,ci) and (di,ei,fi) are both <0 (they are <0, if bi and ei <0)

(ai,bi,ci)*(di,ei,fi) = (ei*ci+bi*(fi-ei), bi*ei , ei*ai+bi(di-ei))

So now, first I have to check if bi and ei are > or < and then to apply an appropriate rule for multiplying.

Any idea how to solve this?

Example:

A=[2 3 4 5 6 7; -3 -2 -1 3 4 5]

B=[0 2 4 -4 -3 -2; -6 -4 -3 4 7 8]

C=A*B

C=[c11=(2 3 4)*(0 2 4)+(5 6 7)*(-6 -4 -3) c12=(2 3 4)*(-4 -3 -2)+(5 6 7)*(4 7 8); c21=(-3 -2 -1)*(-4 -3 -2)+(3 4 5)*(4 7 8) c22=?.]

Best,

Milos