|
[Date Index]
[Thread Index]
[Author Index]
Re: Re: Two questions about modification of a matrix.
On 23 Jun 2009, at 20:03, Leonid Shifrin wrote:
>
> For the second problem, probably the easiest way to speed up code in
> case
> of large matrices is to use Compile:
>
> nullifyNegativeCompiled =
> Compile[{{matr, _Real, 2}},
> Module[{i = 1, j = 1, new = matr},
> For[i = 1, i <= Length[matr], i++,
> For[j = 1, j <= Length[matr], j++,
> If[matr[[i, j]] < 0, new[[i, j]] = 0]]];
> new]];
>
> My benchmarks indicate 3-fold speed - up on <largeTestMatr>, with
> respect to
> a rule-based solution.
In my tests the following is both simpler and much faster :
ClipNullify[mat_] := Clip[#, {0, Infinity}] & /@ mat
For example:
mat = RandomInteger[{-100, 100}, {1000, 1000}];
(m1 = nullifyNegativeCompiled[mat]); // Timing
{0.320822, Null}
(m2 = ClipNullify[mat]); // Timing
{0.013523, Null}
m1 == m2
True
Andrzej Kozlowski
Prev by Date:
Re: Matrix construction
Next by Date:
Re: For loops with mathematica....
Previous by thread:
Re: Two questions about modification of a matrix.
Next by thread:
Re: Re: Two questions about modification of
|