       RE: sort and find in MATHEMATI

A. Jerschow  wrote:
----------
|in MATLAB I would write:
|
|[dummy,index]=sort(a(:,i));
|sorta=a(index,:);
|
|to sort the matrix a by it's i-th column. |
|What's the easiest way to do the same in MATHEMATICA ? |

First we make a matrix of random integers called (data). In:=
data=Table[{Random[Integer,{0,10}],
Random[Integer,{0,2}],
Random[Integer,{50,60}]},{i,8}]

Out=
{{7,1,58},{4,1,60},{3,0,50},{1,0,58},{9,2,53},{1,1,51},{3,0,54},{8,2,53}}

Note:  If you use TableForm[data]   or  MatrixForm[data]  the data are
displayed as a Table or a Matrix.  The two forms are very similar.

In the line below we sort the data on the second column. In general we
use OrderedQ[{#1[[n]], #2[[n]]}]&  to Sort on column (n). In:=
Sort[data,OrderedQ[{#1[],#2[]}]&]

Out=
{{3,0,50},{1,0,58},{3,0,54},{7,1,58},{4,1,60},{1,1,51},{9,2,53},{8,2,53}}

The Mathematica syntax for this is a bit cryptic. Let me know if you
Excuse me for my lack of modesty , but I think I have a better
explanation  than anything else I have found.

A novice might be tempted to do this using a Do loop or For loop, etc.
But that is much less efficient using Mathematica.

|
|Another thing, again MATLAB:
|
|index=find(a(:,i) == 0);
|sorta=a(index,:);
|
|to remove lines, which have zeros in the i-th column. |

The following removes all data that have zero for the second element.
In:=
Select[data,(#[]!=0)& ]

Out=
{{7,1,58},{4,1,60},{9,2,53},{1,1,51},{8,2,53}}

In the following lines I show you how to do some other things that are
very  useful.

We can perform an operation f[] on the third column of data. In:=
data/.{x_,y_,z_}->{x,y,f[z]}

Out=
{{7,1,f},{4,1,f},{3,0,f},{1,0,f},{9,2,f},{1,1,f},{3,
0,
f},{8,2,f}}

We can swap the second and third columns. In:=
data/.{x_,y_,z_}->{x,z,y}

Out=
{{7,58,1},{4,60,1},{3,50,0},{1,58,0},{9,53,2},{1,51,1},{3,54,0},{8,53,2}}

That's all for now.
Ted Ersek

• Prev by Date: Global Optimization - New product announcement
• Next by Date: Re: Re: Get rid of Input cells when printing?
• Prev by thread: Global Optimization - New product announcement
• Next by thread: [CFP] Int. SSCC98 Conf., 22-24 Sep. 1998, Durban, South Africa