첫 번째 열 데이터 집합 k
Xk
과 두 번째 열 Yk
(크기는 m x 1
)을 호출 할 수 있습니다. 나는 각 데이터 세트 k
{Xk
, Yk
} 두 스칼라ak
모든 요소 1..m
더 방정식/제약이 있기 때문에 대한 bk
등이
Yk == ak * Xk.^bk
을 찾고 있습니다에 대한 다음, 제대로 질문을 이해한다면 매개 변수 (m
방정식과 두 개의 매개 변수 만 사용)보다 최소 제곱 해를 구합니다. fmincon
또는 다른 최적화 도구없이 can be solved easily - 식 수율
log Yk == log ak + bk * log Xk
새로운 변수를 정의 YYk <- log(Yk)
및 XXk <- log(Xk)
우리의 양측으로부터 log
촬영
는 log ak
및 bk
위한 선형 식을 갖는다. 우리는 모든 사람 (즉 XXk(:,2)=1
이다)의 또 다른 컬럼과 컬럼 벡터 XXk
를 추가하는 경우
사실, 우리는 몇 가지 MATLAB 코드에 대한
XXk * [ b ; log(ak)] == YYk
이제 매트릭스 형태로 우리의 시스템을 작성할 수 있습니다
N = 100; % number of data sets
a = zeros(1, N); % pre allocate room for all ak
b = zeros(1, N); % pre allocate room for all bk
for k = 1 : N
% get the data here: Xk = ???, Yk = ???
XXk = log(Xk);
XXk(:,2) = 1; % add all ones column
YYk = log(Yk);
tmp = XXk \ YYk
a(k) = exp(tmp(2));
b(k) = tmp(1);
end
이 질문이 데이터 세트와 'for' 루프와 아무런 관련이없는 것 같습니다. 'fmincon'을 사용하는 방법에 대한 질문입니다. 따라서, 그것은 표현이 잘 못되어 닫히거나 근본적으로 편집 할 것을 제안합니다. – Shai