[Date Index]
[Thread Index]
[Author Index]
Can anyone see a faster way to compute quantities for a pair or large matrices?
*To*: mathgroup at smc.vnet.net
*Subject*: [mg127412] Can anyone see a faster way to compute quantities for a pair or large matrices?
*From*: W Craig Carter <ccarter at MIT.EDU>
*Date*: Mon, 23 Jul 2012 01:03:32 -0400 (EDT)
*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com
*Delivered-to*: mathgroup-newout@smc.vnet.net
*Delivered-to*: mathgroup-newsend@smc.vnet.net
Hello,
I am computing the gradient on a grid, then computing the gradient's
angle, and its magnitude. The computations below are the bottleneck for
a longer bit of code. I would be grateful for any insights on how to
speed these up.
(*
Let gradfield be the gradient that I have computed and placed in two matrices. Here I will just use random numbers as a proxy:
*)
(*i.e., df/dx, df/dy*)
gradfield = { RandomReal[{-1, 1}, {256, 256}], RandomReal[{-1, 1}, {256, 256}]};
(*my gradients has many zeroes, so I need to handle these*)
SetAttributes[myArcTan, {Listable, NumericFunction}];
myArcTan[0.0, 0.0] = 0.0;
myArcTan[x_, y_] := ArcTan[x, y]
(*the angles, this is slow*)
psiField = MapThread[myArcTan, gradfield, 2];
(*the magnitudes, this is slower*)
magfield = MapThread[Norm[{#}] &, gradfield, 2];
(*examples*)
Do[psiField = MapThread[myArcTan, gradfield, 2], {100}] // Timing
Do[magfield = MapThread[Norm[{#}] &, gradfield, 2], {100}] // Timing
W Craig Carter
Professor of Materials Science, MIT
Prev by Date:
**Re: How to Scale and vary plot for a Differential Equation**
Next by Date:
**Re: can one make local symbol in a pure function?**
Previous by thread:
**Programmatically open palette so that PalettesMenuSettings are preserved**
Next by thread:
**Re: Can anyone see a faster way to compute quantities for a pair or large matrices?**
| |