Why will my function not run?
    7 次查看(过去 30 天)
  
       显示 更早的评论
    
Hi all, why will my function not run? If p = 1 I want to find the determinant of A, if p = 2 I want to find the trace of A and if p doesn't equal 1 or 2 I want to display the error message. Is my code correct, or is there a better way to do it? And why does the function not run. Thank you!
function [det(A),tr(A)] = myFunction(A,p)
if p == 1
  det(A) = det(A);
elseif p == 2
  tr(A) = trace(A);
else 
  disp ('Invalid input')
end
0 个评论
采纳的回答
  Walter Roberson
      
      
 2017-11-20
        function [detA,trA] = myFunction(A,p)
if p == 1
  detA = det(A);
elseif p == 2
  trA = trace(A);
else 
  disp ('Invalid input')
end
However, you are going to have the problem that in each case you are not assigning to one of the output variables. You should check: does the assignment expect you to return the two possibilities to different variables or to just one output?
   function result = test(something)
     if something == 1
       result = 15;
    elseif something == 2
       result = -10;
    else
       result = 'What?'
    end
4 个评论
  Vlad Atanasiu
      
 2020-12-18
				So: If any outputs of a function are undefined, then Matlab throws an error.
Write a function were the first outputs are not defined:
function [a,b,c] = undefined_output(x)
c = x;
Call the function:
try
    [a,b,c] = undefined_output('no error');
    disp(c)
catch
    disp('error')
end
Answer:
error
Where is this behavior specified in the Matlab documentation?
  Walter Roberson
      
      
 2020-12-18
				Not exactly correct. There is only an error if an unassigned output position is assigned to a variable or used in an expression.
try
    [a,b] = undefined_output('no error c unused');
    disp(b)
catch
    disp('error')
end
try
    [a,b,c] = undefined_output('no error c');
    disp(b)
    disp(c)
catch
    disp('error')
end
function [a,b,c] = undefined_output(x)
a = x;
b = 'b okay';
end
更多回答(0 个)
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


