2010-01-04 4 views
3

Matlab R2009b introduced a new "operator" - ~ - pour symboliser une sortie ou une entrée de fonction inutilisée. J'ai une question détaillée sur cette mise en œuvre. (Appel tous les @Loren s.)Matlab Détails de la notation d'entrée inutilisée

Que voit la fonction pour la valeur d'un paramètre d'entrée inutilisé?

savoir si ma fonction est définie comme

myfunc(argOne, argTwo, argThree) 

et il est appelé comme ceci:

myfunc('arg', ~, 'arg') 

est-Nargin 2 ou 3? argTwo est-il indéfini ou vide ou autre chose?

Merci

+3

Oh boy leur syntaxe se dirige vers une impasse. –

+1

Si vous avez MATLAB disponible, je vous conseille d'écrire une petite fonction de test pour le découvrir! – Mikhail

+0

matlab - oui. 2009b - non – Marc

Répondre

4

La syntaxe ~ est uniquement applicable aux entrées de la fonction définition, pas les entrées de la fonction appel (comme indiqué sur this documentation page). En d'autres termes, ce est OK:

function myfunc(argOne, ~, argThree) %# Will do nothing with the second input 
    %# Do stuff here 
end 

mais ce n'est pas:

myfunc('arg', ~, 'arg'); %# Error city ;) 

Ainsi, lorsque vous appelez une fonction, vous ne pouvez utiliser ~ sur le côté gauche :

[~, I] = sort([2 4 1 2 5 3]); %# Sort the vector and keep only the index 
+2

Le ~ peut être utilisé dans une fonction _call_ si c'est sur le LHS. Par exemple. "[~, ~, x] = ordure (1)" fonctionne. Nargout est le même que si des variables régulières avaient été utilisées. –

+0

@Andrew: Noté, et merci. J'ai reformulé afin que j'espère que c'est plus clair maintenant. – gnovice