2011-07-12 4 views
-1

Je travaille sur un algorithme mais il y a une note sur un sélecteur. Δ() est un sélecteur, c'est-à-dire δ (x) = 1 si x> 0, sinon δ (x) = 0;Comment coder un sélecteur?

Comment peut-on coder ceci en utilisant le pseudo-code, C++ ou Java? Merci

+0

Pouvez-vous nous donner un lien vers le document de recherche, ou nous donner une description de l'algorithme sur lequel vous travaillez, afin que nous puissions comprendre comment δ est utilisé dans son contexte? –

+0

si la question –

Répondre

4

δ() est un sélecteur, ie δ (x) = 1 si x> 0, sinon δ (x) = 0

Vous avez juste besoin d'un si

En pseudocode:

delta = function(x) 
     { 
     if (x > 0) 
      return 1 
     else 
      return 0 
     } 
+1

merci nico. Je voulais juste une réponse simple au lieu de personnes attaquant quelque chose que je suis nouveau. –

1

ceci est une fonction passe en échec x si x> 0 si oui, retour 1 autrement retour 0

1
template <class T> 
int selector(T x) 
{ 
    return x > 0 ? 1 : 0; 
} 
+0

Vous pouvez simplifier cela à 'return x> 0;' – fredoverflow

+0

Oui, mais dans mon esprit, il vaut mieux éviter la conversion de type inutile. Certains caractères supplémentaires ne font pas de mal :) – RocketR

1

A sélecteur dans ce contexte est simplement une fonction booléenne qui retourne 0 (ou 1) pour toutes les valeurs de x jusqu'à un certain point, puis retourner 1 (ou 0) après. En d'autres termes, un deux étapes step function.

BTW, compte tenu de la définition spécifique du delta dans la question, le delta est le Heaviside Step Function discret avec une valeur de 0 pour x = 0.

+1

C'est la fonction Heaviside, pas la fonction Heavyside. Le nom semble être descriptif, mais la fonction est nommée d'après George Heaviside plutôt que le fait que la fonction est "lourde" d'un côté. BTW, Appeler cette fonction δ est juste terrible; l'appeler un sélecteur est tout aussi mauvais. La fonction Heaviside est H (x) (duh) et est l'intégrale de la distribution delta. La distribution δ est un sélecteur, mais ce n'est pas une fonction. –

+0

C'est Oliver Heaviside, pas George. –

+0

@David: merci de m'avoir signalé la friandise Heavy vs G. Heaviside. Toutes ces années j'ai supposé que c'était nom après après son image plutôt qu'après une personne. BTW, Wikipedia mentionne Oliver plutôt que George. En outre, totalement d'accord, delta est un mauvais nom pour cela; 'pourrait juste être que le papier référé dans la question utilise le sigma plus approprié, mais il est difficile à lire étant donné la police/codepage. – mjv

0

Si vous ne souhaitez pas utiliser un si, vous pouvez écrire (en C#):

Math.Ceiling (Math.Sign (x) * 0,1)

en Java, il devrait être quelque chose comme ceci:

Math.ceiling (Math.signum (x) * 0,1)