필터 지우기
필터 지우기

Function returning ans instead of three outputs

조회 수: 29 (최근 30일)
Sara Foster
Sara Foster 2019년 9월 8일
답변: Povilas Simonis 2021년 4월 25일
My function is:
function [R,G,B] = MostDistantPixel(pixels)
%rest of code
R = ipixel(1)
G = ipixel(2)
B = ipixel(3)
On the command window it says R = 50, G = 48, and B= 47.
However, it is not returning these outputs and returning only the first output R with a value of 50. How do I fix this?

채택된 답변

Stephen23
Stephen23 2019년 9월 8일
편집: Stephen23 2020년 11월 25일
You need to call the function with three output arguments, e.g.:
inp = [...]; % your input array
[RR,GG,BB] = MostDistantPixel(inp)
Useful basic MATLAB concepts, such as how to call functions with multiple input/output arguments, are explained in the introductory tutorials:
Note that if a function that returns an output and it is called without any outputs being allocated to a variable, then its first output will be assigned to the default variable ans:
It is recommended to avoid referring to ans in code: it is recommended to always define your own output variables.
PS: You will probably also want to suppress the displaying of R, G, and B using semi-colons.
  댓글 수: 7
Stephen23
Stephen23 2019년 9월 8일
편집: Stephen23 2019년 9월 8일
"So let’s say I use this function in another function, it will return the three outputs?"
Where you call it from makes absolutely no difference: if you define your function with three output arguments then when you call it you can allocate those three outputs to three variables. It makes no difference if you do this from the command line, inside another function, or in a script: the syntax is always the same (just like I showed in my answer).
Note that you can also call a function with fewer outputs than the function defines, the unassigned outputs are then essentially ignored (however in some cases, e.g. meshgrid, ndgrid, find, size, etc., the number of output arguments used can also change the functionality).
Sara Foster
Sara Foster 2019년 9월 8일
Thank you! This has helped me a lot.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Povilas Simonis
Povilas Simonis 2021년 4월 25일
I have similar problem, yet I dont manage to understand how to fix it..
function [Out] =test2(a)
if a>3
Out=a+1;
else
fprintf('Less than 4\n');
end
function gives me ans instead of Out

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by