2010-09-16 7 views
2

J'ai trois doubles:moyen le plus efficace pour trouver le plus grand des trois doubles dans .NET Microframework?

double[] accel = new double[3] 
     { 
      _Razor.Accel_X, 
      _Razor.Accel_Y, 
      _Razor.Accel_Z, 
     }; 

Quelle est la façon la plus efficace de trouver le plus grand de ces NETMF?

+3

Essayer de lire le rasoir 9DOF AHRS de Sparkfun? Jetez un oeil à mon projet: http://code.google.com/p/microframework-uav/source/browse/QuadroLib/Ahrs/RazorAhrs.cs – chriszero

+0

Heheh, oui, en essayant de lire à partir de la 9DoF. Merci pour le lien. Savez-vous où je peux trouver de la documentation sur le code AHRS? Il n'y a AUCUNE que je puisse trouver. – chris12892

+0

Le code Razor original est hébergé sur http://code.google.com/p/sf9domahrs/ Mais la sortie ASCII était un moyen de faire beaucoup pour mon UC, j'ai donc modifié le firmware d'origine pour être compatible avec le format binaire ArduIMU. C'est beaucoup plus rapide à analyser. Vous pouvez obtenir plus d'infos sur mon blog (jetez un oeil à mon profil pour le lien). Le firmware sf9domahrs est un firmware ArduIUM fortement adopté. – chriszero

Répondre

4
double result = accel[0]; 
if (accel[1] > result) result = accel[1]; 
if (accel[2] > result) result = accel[2]; 
return result; 
0

Probablement juste cela, non?

double max = _Razor.Accel_X; 

if (_Razor.Accel_Y > max) 
    max = _Razor.Accel_Y; 

if (_Razor.Accel_Z > max) 
    max = _Razor.Accel_Z; 

Ou voulez-vous quelque chose de plus joli?

2

Je crois que c'est la manière habituelle.

double max = max((max(accel[0],accel[1]),accel[2])

+1

Pensez-vous vraiment que c'est une bonne idée de nommer vos variables (max) de la même façon que la macro max? – semaj

0

La solution la plus courte avec LINQ: accel.Max();

+3

il parle du "Microframework";) il n'y a pas de Linq – chriszero

Questions connexes