2011-04-20 2 views
0

함수 g가 함수 f를 매개 변수로 취하고 g 안에는 x = t * feval (f, u)와 같은 것이 있다고 가정합니다. 그러나 f는 스칼라 값 또는 벡터 값일 수 있습니다. 벡터 값인 경우 x가 벡터가되도록합니다. 즉, f가 반환 한 전체 벡터를 반환하는 feval 문입니다. 스칼라 및 벡터의 경우 모두 어떻게이 작업을 수행 할 수 있습니까?Matlab - 스칼라와 벡터 모두에 대해이 작업을 수행하는 방법

답변

0

내가 말할 수있는 한, 당신이 묻는 것은 이미 matlab의 기본 동작이다. 즉, f가 스칼라를 반환하면 x는 스칼라가되고 벡터가 반환되면 x는 벡터가됩니다.

예를 들어 t가 스칼라 일 경우이 값은 유지됩니다. 그렇지 않으면 결과는 t * [f의 출력]이 계산되는 방식에 따라 달라집니다.

function o1 = f(N) 
o1 = zeros(1,N); 
end 

여기서 F는 스칼라를 반환하는 경우 N = 1, N> 1 벡터. 코드를 호출하면 feval(f,u)의 출력이 스칼라 또는 벡터가 될 수있는 경우

x=feval('f', 1); % Returns x = 0 

x=feval('f', 4); % Returns x = [0 0 0 0] 
+0

아니요, 나를 위해 작동하지 않습니다. function [o1 o2] = f (t, y) o1 = y (2); o2 = -sin (y (1)); 끝내면 x> feval ('f', 1, [1 1]) x = 아이디어가 있습니까? 이 하나에 붙어있어 – Glup

+1

나는 그것을 얻었다 고 생각해, 나는 방법 서명, 즉 [01, 02] 대신에 x = f (t, y) 함수를 가져야한다. – Glup

+0

@glup : 실제로 첫 번째 함수 정의로, x는 단순히 o1 값을 주면됩니다. 그러나이 문제는 이미 여기에 답변되어 있습니다 (http://stackoverflow.com/questions/5734858/matlab-bug-with-multiple-inputs). – jmetz

0

를 부여하며,이 같은 것으로 결과 x을 원하는 (즉 스칼라 또는 동일한 길이와 차원의 벡터) 다음은 t이 무엇인지에 따라 달라집니다 : t 스칼라가

  • 경우에, 당신은 무엇을 괜찮습니다. * 또는 .* 연산자를 사용하여 곱셈을 수행 할 수 있습니다.
  • tfeval(f,u)의 결과와 동일한 길이 및 크기의 벡터 인 경우 .* 연산자를 사용하여 요소 단위의 곱하기를 수행합니다.
  • t 경우 같은 길이의 벡터에 불과하다 다른feval(f,u)의 결과 (즉, 하나의 행 벡터이고 하나는 열 벡터이다)한다는 차원, 당신은 하나를 전치에 의해 크기가 일치을해야이나와 다른 하나는 .' 연산자입니다.
  • t의 길이가 feval(f,u) 인 결과와 다른 경우 요소 별 곱하기를 수행 할 수 없습니다.
관련 문제