2015-01-18 2 views
2
I는 MATLAB는 서로 다른 크기의 다수의 출력을 돌려 있어야

, 즉 하나는 m 행렬 N 제가여러 개의 서로 다른 크기의 출력 기능?

{A;B}=name(arg1,arg2,...,argn) 

가 I이 오류가 입력 할 때 다른 벡터

function output = name(arg1,arg2,...,argn) 

    blabla 

    output = {A;B}; 

end 

된다

Error: The expression to the left of the equals sign is not a valid target for an assignment.

어떻게 여러 개의 출력을 얻을 수 있습니까? 나는 그들이 인쇄되기를 원하지 않는다. 나는 더 많은 계산 결과를 사용해야한다.

답변

6

.

function [varargout] = YourFcn(arg1,arg2) 

A = arg1; 
B = arg2; 

varargout = {A;B}; 

end 

그런 다음 당신은 당신의 함수를 호출하고 명령 창에서 다음과 같은 결과를 수집 할 수 있습니다 또는 예를 들어 스크립트 :

x = rand(1,10); 
y = magic(5); 

[A,B] = YourFcn(x,y) 

결과

예를 들어,이 기능을 고려 A 및 B에 출력이 할당됩니다.

A = 

    Columns 1 through 5 

    0.8147 0.9058 0.1270 0.9134 0.6324 

    Columns 6 through 10 

    0.0975 0.2785 0.5469 0.9575 0.9649 


B = 

    17 24  1  8 15 
    23  5  7 14 16 
    4  6 13 20 22 
    10 12 19 21  3 
    11 18 25  2  9 
+0

OP에 대한 참고 사항 : [입력 인수에 동일한 접근법]을 적용 할 수 있습니다 (http : // st ackoverflow.com/a/21654075/2778484) ('varargin'과'nargain') 아니면 멋진 것을 얻을 수 있고 ['inputParser' 클래스] (http://stackoverflow.com/a/20337956/2778484)를 사용할 수 있습니다. +1, Benoit – chappjc

+0

위대한 @chappjc 나는 inputParser 감사에 대해 몰랐다! –

1

이 사람이 무엇을 할 수 있습니다 : 당신은 또한 할당 할 수있는 기능 출력에 대한 varargout 옵션 (믿거 나 말거나) 출력의 변수 번호를 사용할 수 있습니다

function [a,b,c,d] = test(x,y,z) 
a = whatever; 
b = whatever; 
c = whatever; 
d = whatever; 
end