Effacer les filtres
Effacer les filtres

Why will one of my lines of this function not work?

1 vue (au cours des 30 derniers jours)
James Crowe
James Crowe le 21 Nov 2017
Commenté : James Crowe le 21 Nov 2017
How comes the line elseif p == 2 doesn't work when using the function in a script, but the rest do? Is there a better way to do this? Also how would I make it so that there is no output to the command window?
function [detA,trA] = myFunction(A,p)
if p == 1
detA = det(A);
elseif p == 2
trA = trace(A);
else
disp ('Invalid input')
end

Réponse acceptée

Birdman
Birdman le 21 Nov 2017
You define 2 outputs but in each if case, you only use one output and the other one is left unassigned. When you call function from workspace by not assigning its outputs, like
myFunction(A,1)
or
myFunction(A,2)
it automatically returns the first output. Since in the second if case you did not assign the first output to something, it does not return it. Instead try the following.
function y = myFunction(A,p)
if p == 1
y= det(A);
elseif p == 2
y= trace(A);
else
disp ('Invalid input')
end
and you can call it by
myFunction(A,1)
or
myFunction(A,2)
  1 commentaire
James Crowe
James Crowe le 21 Nov 2017
Ah, that makes sense! Brilliant thank you

Connectez-vous pour commenter.

Plus de réponses (0)

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by