RE: Matrix Problem
- To: mathgroup at smc.vnet.net
- Subject: [mg15267] RE: [mg15247] Matrix Problem
- From: "Ersek, Ted R" <ErsekTR at navair.navy.mil>
- Date: Wed, 30 Dec 1998 01:50:29 -0500
- Sender: owner-wri-mathgroup at wolfram.com
Pedro wrote: > > > t= > N[GramSchmidt[{ve[1],ve[2],ve[3],ve[4]}, > InnerProduct -> > (skproduct[#1, #2]&)]] > > {{{1.1547},{0},{0},{0}},{{0},{0.755929},{0},{0}}, > {{-0.258199},{0},{0.774597},{0}},{{0.},{-0.169031},{0.},{1.18322}}} > > But I would like to have t in the following form: > > {{1.1547,0,0,0},{0,0.755929,0,0}, > {-0.258199,0,0.774597,0},{0.,-0.169031,0.,1.18322}} > > so t should be a real matrix. How can I make the innerst brackets > disapear ? > > Pedro, In[5]:= t={ {{1.1547},{0},{0},{0}}, {{0},{0.755929},{0},{0}}, {{-0.258199},{0},{0.774597},{0}}, {{0.},{-0.169031},{0.},{1.18322}} }; In[6]:= Apply[Identity, t, {-2}] Out[6]= { {1.1547, 0, 0, 0}, {0, 0.7559289, 0, 0}, {-0.258199, 0, 0.774597, 0}, {0., -0.169031, 0., 1.18322} } So how does this work? Check the information on Apply. In[7]:= ?Apply Apply[f, expr] or f @@ expr replaces the head of expr by f. Apply[f, expr, levelspec] replaces heads in parts of expr specified by levelspec. I applied the function Identity to (level -2). Note: Identity[expr]->expr Now what is (level -2)? Level -2 is all subexpressions with a depth of 2. Anything like {0.2581} has a depth of 2. In[8]:= Depth[ {0.2581} ] Out[8]= 2 You can read more about levels of expressions in section 2.1.7 of the Mathematica book. ________________________________ Here is another way to do what you want. In[9]:= t/.{num_}:>num Out[9]= {{1.1547, 0, 0, 0}, {0, 0.7559299, 0, 0}, {-0.258199, 0, 0.774597, 0}, {0., -0.169031, 0., 1.18322} } Cheers, Ted Ersek