Re: [Outer [Times, , ] ] Question
- To: mathgroup at smc.vnet.net
- Subject: [mg45823] Re: [Outer [Times, , ] ] Question
- From: drbob at bigfoot.com (Bobby R. Treat)
- Date: Mon, 26 Jan 2004 01:53:32 -0500 (EST)
- References: <bv00aa$jda$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
MatrixForm objects don't add, because they're not matrices. But your code works perfectly for me, because (see a recent thread on MatrixForm), I have installed the following code in my Init.m file (thanks to Andrzej Kozlowski): Unprotect[MatrixForm]; HeadTest[func_] := Intersection[{func}, {If, List, Set, SetDelayed, UpSet, UpSetDelayed, \ TagSet, TagSetDelayed, Format, MakeBoxes, MakeExpression, ToBoxes, Shallow, \ Short, Hold, HoldForm, HoldComplete, HoldPattern, Verbatim, Blank, BlankSequence, BlankNullSequence, Alternatives, Pattern, Optional, Repeated, RepeatedNull, Condition, PatternTest, Rule, RuleDelayed, FullForm, InputForm}] === {} MatrixForm[MatrixForm[m_]] ^:= MatrixForm[m]; MatrixForm /: (f_?HeadTest)[ a1___, a2_MatrixForm, a3___] := Module[{result}, result = Replace[{a1, a2, a3}, MatrixForm -> Identity, 2, Heads -> True]; result = f @@ result; If[MatrixQ[result], MatrixForm[result], result]] Protect[MatrixForm]; Bobby MichaelSMcCain at cs.com wrote in message news:<bv00aa$jda$1 at smc.vnet.net>... > Hi: > > I want to take a Column Vector and multiply it by a Row Vector to create an > "Outer" Matrix. > > In other words, I want to take a 5x1 Column Vector and multiply it by a 1x4 > Row Vector and output a 5x4 Matrix. > > I then want to add several of these Matrices together and obtain a "final" > Matrix. > > I tried the following: > > x1 = {1, -1, -1, 1, 1}; > y1 = {1, 1, -1, -1}; > > x2 = {-1, 1, -1, 1, -1}; > y2 = {1, -1, 1, -1}; > > x3 = {1, 1, -1, -1, 1}; > y3 = {-1, -1, 1, 1}; > > m1 = MatrixForm[Outer [Times, x1, y1] ] > m2 = MatrixForm[Outer [Times, x2, y2] ] > m3 = MatrixForm[Outer [Times, x3, y3] ] > > mm = m1 + m2 + m3 > > MatrixForm[mm] > > The output that I get is incorrect and does not combine into a single Matrix. > > > What am I doing wrong? > > Thanks, > > > Mike McCain > MichaelSMcCain at cs.com