Re: 100 rows and 100 columns random matrix
- To: mathgroup at smc.vnet.net
- Subject: [mg123467] Re: 100 rows and 100 columns random matrix
- From: "Nasser M. Abbasi" <nma at 12000.org>
- Date: Thu, 8 Dec 2011 05:24:54 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <jbniam$497$1@smc.vnet.net>
- Reply-to: nma at 12000.org
On 12/7/2011 5:23 AM, Sahar Nazemi wrote: > Hello > I'm a student of geology who works with > Mathematica sofware .I'm learning it by myself recently. > I have a question and will appreciate if you > help me in this regard. > I have created a 100 rows and 100 columns random > matrix which its elements are between 0 to 1(for example it consists of > 0.687,...). > Now I want to know how many of these elements > are in the range of "0 to 0.5" and how many are in the range of > "0.5 to 1". > I also use "Count" function as below > but it doesnt answer: > Count[a,{0,0.5}] > ("a" is my random matrix). > Regards > Sahar Nazemi The important thing to note is that some functions take a 'pattern' to look for in a list (such as Cases, Position), and some functions take a 'criteria' to look for in a list (such as Select). This is the first thing you need to decide on. So, what you are looking for above is a criteria (#<0.5), and not a pattern. Hence you can use Select ---------------- n = 5; (*in your case this will be 100 *) (a = Table[RandomReal[], {n}, {n}]) // MatrixForm p = Select[Flatten[a], # < 0.5 &]; m = Length[p] ------------------------ If you want to use Cases, you can, but need to do a little more work in order to make it a pattern so that Cases is happy -------------------------------------- p = Cases[Flatten[a], x_ /; x < 0.5] m = Length[p] ------------------------------------ Notice in all the above, Flatten was used to make the 'matrix' into a 'vector'. If you want to find the positions of these elements in the matrix, then do ------------------------------ Position[a, x_ /; x < 0.5] ----------------------------- If you want to replace those elements which are <0.5 in the matrix, by another value, say Null, then do ----------------------------------- p = Position[a, x_ /; x < 0.5]; a = ReplacePart[a, p -> Null] ----------------------------------- To find how many are >=0.5, just take the difference -------------------------------- n = 5; (*in your case this will be 100 *) (a = Table[RandomReal[], {n}, {n}]) // MatrixForm p = Select[Flatten[a], # < 0.5 &]; m = Length[p]; n^2-m ------------------------- --Nasser