2012-03-11 3 views
1

Salut, je suis curieux de savoir pourquoi je reçois le comportement suivant avec Matlab et Octavecomportement curieux avec des fonctions anonymes Octave et Matlab

octave:7> pdf = @(x) (0<=x && x<1).* (x) + (1<=x && x <=2).* (2-x); 
octave:8> 
octave:8> t = 0:0.1:1; 
octave:9> 
octave:9> y = pdf(t) 
y = 

    0 0 0 0 0 0 0 0 0 0 0 

octave:10> 

je reçois le même comportement avec Matlab savoir y est un vecteur nul.

Mais si j'ajoute les éléments suivants pour la boucle

for i=1:size(t,1) 
    y(i) = pdf(t(i)) 
end 

puis-je obtenir le bon résultat.

Columns 1 through 19: 

0.00000 0.10000 0.20000 0.30000 0.40000 0.50000 0.60000 0.70000 0.80000 0.90000 1.00000 0.90000 0.80000 0.70000 0.60000 0.50000 0.40000 0.30000 0.20000 

Columns 20 and 21: 

    0.10000 0.00000 

Répondre

5

Le && et || sont les opérateurs de court-circuit, destiné à être utilisé avec scalaires. Remplacer par & ou |. J'obtiens une erreur lors de l'exécution du code (vectorisé) ci-dessus dans Matlab (R2011B). Après avoir remplacé le && par &, il semble fonctionner comme prévu.

Questions connexes