2017-03-07 2 views
0

Comment obtenir le coefficient a et b de cette équation en utilisant la méthode des moindres carrés? Quelle est la meilleure façon de résoudre cela?résoudre l'équation multidimensionnelle en utilisant la méthode des moindres carrés dans matlab

enter image description here

Disons que θ(k1,k2) est une matrice de 60x60 (valeurs/constantes), qui est theta=rand(60,60), mais

enter image description here

Comment puis-je résoudre pour a et b en Matlab? Une fonction facile à faire?

Merci d'avance!

Document de référence: Here (section III)

Répondre

1

Vous pouvez utiliser la fonction de retour en arrière pour le faire. Voici un exemple:

% Generate an example 
n = 60; 
theta = rand(n); 

% Create regressors 
[M,N] = meshgrid(1:n,1:n); 
X = [M(:), N(:)]; 

% Regress 
B=regress(theta(:), X); 

% Compare the results 
theta_hat = reshape(X*B,n,n); 
plot3(M,N,theta,'o'); 
hold on; 
surf(M,N,theta_hat); 

Notez que la régression est effectuée sur theta(:) qui est un (3600,1) vecteur contenant les valeurs de thêta (k1, k2) utilise les coordonnées correspondantes en X qui est (3600 , 2). La première colonne de X est k1, la seconde est k2.

Le résultat de la régression d'appel vous donne B=[a;b] les coefficients qui correspondent le mieux aux données de thêta.

Une note finale est que les moindres carrés pourraient être résolus directement à l'aide

B=inv(X'*X)*X'*theta(:) 

qui devrait donner le même résultat, mais regress est la méthode préférée Matlab.

+0

Merci beaucoup! Tu as sauvé ma journée! Après avoir essayé les deux méthodes, je préfère la méthode 'regress' aussi, c'est plus 'computational'. Merci pour l'explication détaillée aussi, maintenant je comprends clairement avec la visualisation! –