MathGroup Archive 2003

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

Search the Archive

Nonzero Min[]

  • To: mathgroup at smc.vnet.net
  • Subject: [mg43447] Nonzero Min[]
  • From: Petr Kujan <kujanp at fel.cvut.cz>
  • Date: Wed, 17 Sep 2003 07:59:05 -0400 (EDT)
  • Organization: Czech Technical University
  • Sender: owner-wri-mathgroup at wolfram.com

Hello MathGroup,
   I need function which finds nonzero minimum in the list. My
definitions are now slower in comparison with kernel function Min[ ].


findmin1[data_] := Min[data]
findmin1[dat] // Timing  (* 0.01 Second*) (* Very good time consumption
but wrong result for me. *)


It's possible shorter time consumption for this problem?

(*************************************************************)
My definition are now:

(* Testing data are Integer or Real numbers (possible mixed). *)
SeedRandom[1];
dat = Abs[Join[Array[Random[
      Integer, {-10, 10}]&, {10^4}], Array[Random[Real, {-10, 10}]&,
{10^4}]]];

(*** 2. - Select ***)
findmin2[data_] := Min[Select[data, Not[ZeroQ[#]]&]];
findmin3[dat] // Timing
(* 0.12 Second *)

(*** 3. - Sort ***)
dropfirstzeros[dat_List] := Block[{i}, i = 1;
        While[ZeroQ[dat[[i]]], i = i + 1;];
        Drop[dat, i - 1]];
findmin2[data_] := dropfirstzeros[Sort[data]][[1]];
findmin2[dat] // Timing
(* 0.14 Second *)

(*** 4. - Map ***)
getnznum[list_] := Block[{i = 1},
        While[ZeroQ[list[[i]]], i++]; list[[i]]
        ];
findmin4[data_] := Block[{minim = getnznum[data]},
        If[(# > 0) && (minim > #), minim = #] & /@ data;
        minim
        ];
findmin4[dat] // Timing
(* 0.26 Second *)

(*** 5. - Do ***)
getnznum[list_] := Block[{i = 1},
            While[ZeroQ[list[[i]]], i++]; list[[i]]
        ];
findmin5[data_] := Block[{minim, p},
      minim = getnznum[data];
      Do[
        p = data[[i]];
        If[((p > 0) && (minim > p)), minim = p],
        {i, 1, Length[data]}
        ];
      minim
      ]
findmin5[dat] // Timing
(* 0.32 Second *)
(*************************************************************)

Thank in advance for all your help.
Best regards,
    Petr.


  • Prev by Date: 14MB image very quickly exhausts 512MB RAM.
  • Next by Date: Re: Pattern Matching Problem
  • Previous by thread: Re: 14MB image very quickly exhausts 512MB RAM.
  • Next by thread: Re: discrete frequency distribution