j'ai écrit une fonction que j'espère avoir l'entrée et la sortie vectorisé:Comment vectoriser l'entrée de fonction de matlab quand NaN pourrait être l'entrée?
function output = myfunction(input1,input2)
if input1 == 0
output = equation1 ;
else
output = equation2 ;
end
Je l'ai testé avec input1 = 0
et input1 = 0.5
et myfunction
fonctionne bien. input1
et input2
sont en réalité des matrices 3D. J'essaie d'avoir un calcul plus efficace au lieu d'exécuter une boucle pour un calcul élément par élément. Si input1
sont tous les éléments non-zéro, myfunction
fonctionne correctement. Il semble qu'une fois que j'ai entré une matrice avec des éléments zéro et non nul, il ne peut pas passer par le if-statement
correctement. Ma fonction me donnera NaN pour l'élément qui a input1==0
.
Comment puis-je le modifier afin que myfunction
peut prendre un nombre ou une matrice dans un if-statement
?
Merci!
[EDIT:]
La fonction réelle ressemble à ceci:
function output = myfunction(input1 , frequency , input2 , input3)
zero_ind = input1 == 0 ;
output = zeros(size(input1)) ;
output(zero_ind) = input3(zero_ind)/frequency ./ input2(zero_ind) ; ;
temp1(~zero_ind) = input1(~zero_ind)/frequency ;
temp2(~zero_ind) = input2(~zero_ind) * frequency ;
output(~zero_ind) = input3(~zero_ind) .* (1 + temp1(~zero_ind)).^temp2(~zero_ind) .* temp1(~zero_ind) ./ ((1 + temp1(~zero_ind)).^temp2(~zero_ind) - 1) ;
Est-ce que les deux équations utilisent 'input1' et' input2'? – EBH
'equation1' utilise input2 et' equation2' utilise input1 et input2. Cela fera-t-il quelque chose de différent? – Ying
Ce n'est pas exactement clair pour moi ce que vous voulez faire. Est-ce que 'all (input1 (:))' est ce que vous cherchez? – Poelie