Re: Adding a value to the cell of a matrix
- To: mathgroup at smc.vnet.net
- Subject: [mg75903] Re: [mg75880] Adding a value to the cell of a matrix
- From: DrMajorBob <drmajorbob at bigfoot.com>
- Date: Sun, 13 May 2007 05:42:16 -0400 (EDT)
- References: <2868213.1178958082081.JavaMail.root@m35>
- Reply-to: drmajorbob at bigfoot.com
Never, EVER use do loops. (OK, sometimes. As a last resort.)
any = Table[RandomReal[], {i, 5}, {j, 4}];
gt0 = Map[If[# > 1/2, 1, 0] &, any, {2}]
{{0, 0, 1, 1}, {1, 1, 1, 1}, {0, 0, 1, 0}, {1, 0, 1, 0}, {1, 0, 0, 1}}
(1 indicates a number > 1/2, 0 otherwise.)
This counts occurrences by column:
Plus @@ gt0
{3, 1, 4, 3}
or
Total /@ Transpose[gt0]
{3, 1, 4, 3}
Counting by row:
Total /@ gt0
{2, 4, 1, 2, 2}
Bobby
On Sat, 12 May 2007 02:15:03 -0500, newbie <puretexan at gmail.com> wrote:
> I have a matrix of values that i am searching for a specific value in
> and i want to count the number of occurances in each column. which i
> can do but not in a loop. I want to be able to use a matrix to store
> the number of occurances so i can put it in a loop. I already have a
> loop that finds the values and just adds them to a value i created. do
> you know how i can add +1 to the cell of a matrix? When i try to do
> this it says the values are protected. i tried unprotecting them but
> couldn't get that to work.
>
>
> any ideas?
>
> Here is the code i am using for the search
>
>
> In[673]:=Orderedcellcycle=OverExpressed; (* Dimensions {200, 18}*)
> l=matrix1; (*{5164, 18}*)
> Do[l[[All,i]]=Ordering[matrix1[[All,i]]],{i,1,18}];
> Do[Do[Orderedcellcycle[[i,j]]=annotations[[l[[i,j]],6]],{i,1,200}],{j,
> 1,18}];
>
> In[678]:=gcounter=scounter=gmcounter=mgcounter=sgcounter=0;
>
> In[679]:=Do[Do[If[Orderedcellcycle[[i,j]]=="G1",gcounter=gcounter
> +1,gcounter=\
> gcounter+0],{i,1,200}];
> Do[If[Orderedcellcycle[[i,j]]=="S",scounter=scounter+1,scounter= > scounter+0],{i,1,200}];
> Do[If[Orderedcellcycle[[i,j]]=="S/G2",sgcounter=sgcounter
> +1,sgcounter=
> sgcounter+0],{i,1,200}];
> Do[If[Orderedcellcycle[[i,j]]=="G2/M",
> gmcounter=gmcounter+1,gmcounter=gmcounter+0],{i,1,200}];
> Do[If[Orderedcellcycle[[i,j]]=="M/G1",mgcounter=mgcounter
> +1,mgcounter=
> mgcounter+0],{i,1,200}],{j,1,18}]
>
>
>
--
DrMajorBob at bigfoot.com