MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Matrix Output

  • To: mathgroup at smc.vnet.net
  • Subject: [mg71019] Re: [mg71001] Matrix Output
  • From: Murray Eisenberg <murray at math.umass.edu>
  • Date: Sat, 4 Nov 2006 23:07:17 -0500 (EST)
  • Organization: Mathematics & Statistics, Univ. of Mass./Amherst
  • References: <200611040908.EAA25111@smc.vnet.net>
  • Reply-to: murray at math.umass.edu

In the context of Mathematica, I'm not sure I understand anything about 
your question: are you sure this is the group you wanted to post to? 
Your syntax is totally non-Mathematica.

. lists are enclosed within {curly brackets} and their entries
   separated by commas -- thus "{1,4}" and NOT "[a 4]"

. "zeros" is not the name of a built-in Mathematica function

. all Mathematica functions enclose their arguments by
   [square brackets] and NOT parentheses -- thus
   "ZeroMatrix[4,2]" and NOT "zeros[4,2]"

. "E" is a reserved symbol for the base of the natural log

. The built-in Mathematica functions all have names beginning
   with either a $ sign or else an upper case letter -- thus
   "ZeroMatrix" NOT "zeros"; "For" and NOT "for"; "Length" and NOT
   "length"

. In Mathematia "For" is just a function and NOT a special
   syntactical construct, so it does NOT use any matching "end".

Even allowing for the completely wrong syntax, are you sure the 
algorithm you list is what you really want? Your matrix E is 4-by-2, 
whereas the nested for loops only produce 4 elements of E.  Did you 
deliberately want the last two rows (or columns??) of E to be zeros?

If indeed you wanted your 4-by-2 matrix and insist upon an elaborated 
element-by-element creation of its entries, then in Mathematica you 
could do it as follows:

    Needs["LinearAlgebra`MatrixManipulation`"]
    A={1,4}; B={2,5};
    eMat=ZeroMatrix[4,2];
    Do[eMat[[i,j]]=A[[i]]B[[j]],{j,1,Length[A]},{j,1,Length[B]}]
    eMat
{{2,5},{8,20},{0,0},{0,0}}

Then to display that result as a 4-by-2 matrix rather than as a list of 
4 2-element lists, use the function MatrixForm:

   MatrixForm[eMat]

or

   eMath // MatrixForm

If what you REALLY wanted was a 2-by-2 matrix, then in Mathematica you 
don't need any explicit element-by-element computation at all but could 
proceed as follows:

   A = {1, 4}; B = {2, 5};
   eMat = Outer[Times, A, B]
{{2,5},{8,20}}
   eMat // MatrixForm

Even if you really did want the 4-by-2 matrix your "zeros(4,2)" 
suggests, still there is no need to use looping with element-by-element 
computation. Instead:

   Needs["LinearAlgebra`MatrixManipulation`"]
   A = {1, 4}; B = {2, 5};
   eMat = ZeroMatrix[4,2];
   eMat[[ {1,2},all ]] = Outer[Times,A,B];
   eMat

If you're going to accomplish anything with Mathematica, it's definitely 
worthwhile to begin reading the documentation supplied with it.  If 
you're going to use Mathematica to work with matrices, then you want to 
read, among other things, the parts of the documentation dealing with lists.

Liz wrote:
> Hello, how to output the result "E" as matrix? Is there better way to get the results and output the results into matrix?
> 
> Thanks in advance.
> 
> 
> 
> A=[1 4];
> B=[2 5];
> E=zeros(4,2);
>  for m=1:length(A)
>   for n=1:length(B)
> 	E=[A(m) B(n)]
>   end
>  end
> 
> 

-- 
Murray Eisenberg                     murray at math.umass.edu
Mathematics & Statistics Dept.
Lederle Graduate Research Tower      phone 413 549-1020 (H)
University of Massachusetts                413 545-2859 (W)
710 North Pleasant Street            fax   413 545-1801
Amherst, MA 01003-9305


  • Prev by Date: RE: Tricky visualization of maximization problem
  • Next by Date: Re: Re: undocumented
  • Previous by thread: Re: Matrix Output
  • Next by thread: Re: Matrix Output