2009-12-10 5 views
0

I ont équation matricielle ci-dessous:comment puis-je trouver les paramètres de l'équation matricielle dans matlab?

[M] = [A][R] + [B][L] 

où: A et B = 2 par 2 matrices

M, R, L, et = 2 par une matrice.

Pour estimer une valeur spécifique de A et B, j'ai 9 données différentes de [M], [R] et [L]. Disons que ces 9 données sont à un groupe, et j'ai des centaines de données de groupe.

Et j'ai besoin de trouver la valeur de A et B liés à des données de groupe spécifiques.

Donc quelqu'un ne possède ou savoir quelque chose avec Matlab comment obtenir les valeurs de [A] et [B] pour chaque groupe par juste donner simplement entrée [M], [R] et [L] données dans Matlab?

Répondre

0

Vous ne pouvez pas matricies de tailles différentes. Cette équation n'a aucun sens pour moi.

MISE À JOUR:

Cette équation mise à jour est logique.

Cela ressemble à un problème d'ajustement des moindres carrés. Vous allez entrer vos données et obtenir la meilleure estimation possible pour les matrices de coefficients. Je devrais en savoir plus sur la nature exacte des données, des regroupements, etc., mais je vous recommande de commencer à lire sur les capacités d'ajustement des moindres carrés de MATLAB.

L'ajustement par les moindres carrés commence par un modèle. Supposons que vous avez trois variables indépendantes (x, y, z) et une variable dépendante (v):

alt text http://www.equationsheet.com/latexrender/pictures/33a65b75846d5933d7c269c41c400384.gif

Vous avez maintenant quatre coefficients dont vous avez besoin pour résoudre. Vous aurez n ensembles de points, où n> 4, de sorte que vous devrez faire un ajustement des moindres carrés.

Si vous remplacez vos points dans l'équation, vous vous retrouverez avec une équation matricielle:

alt text http://www.equationsheet.com/latexrender/pictures/9b5ef4e1d0b3b3870cd8423e1db7f1b4.gif

Si vous Prémultiplier les deux côtés par la transposition de alt text http://www.equationsheet.com/latexrender/pictures/74c29fdfadc279708cff1e31fa585a4f.gif, vous aurez une matrice carrée qui vous pouvez inverser et résoudre pour les coefficients.

Cette formulation permet également des polynômes d'ordre supérieur.

+0

Pourquoi pas? [Xm; Ym], [xr; yr], [xl; yl] et C sont des matrices 2-en-1. A et B sont des matrices 2-par-2. Donc, [Xm; Ym] = A x [xr; yr] + B x [xl; – Bree

+0

Salut duffymo, Je viens de changer l'équation, j'espère que vous n'avez pas mal compris avec l'équation. mieux – Bree

+0

BEAUCOUP mieux! Je vais mettre à jour ma réponse en conséquence. – duffymo

2

Quelque chose ne va pas dans la façon dont vous avez réglé votre problème. Peu importe quelles valeurs M, R et L ont votre équation va avoir un nombre infini de solutions. Indépendamment des valeurs de M, R et L, une solution est [A] = [0], [B] = [0], [C] = [M]. En fait, si vous définissez [C] = [M], alors [A] et [B] peuvent être des matrices pour lesquelles [A] [R] = [0] et [B] [L] = [0], et il y en a un nombre infini.

Post-commentaires modifier

OK, j'ai lu votre commentaire ci-dessous un peu plus attentivement. Je pense que la façon originale dont vous avez posé votre question est un peu trompeuse. Dans vos nouvelles formulations que vous avez 9 cas de

Xm = a Xr + BYR + CXP + DYP

Cela est généralement mis en termes d'une matrice 9x4 multipliant quatre vecteur donnant un 9 vecteur:

y = X b

Où y est un vecteur 9x1 contenant votre Xm, X est la matrice 9x4 contenant vos 9 rangées de valeurs Xr, Yr, Xp et Yp, et b est l'inconnue que nous aimerions résoudre pour .

Si toutes les équations sont linéairement indépendantes, le système est sur-déterminé, donc vous ne pouvez pas obtenir une solution exacte, seulement un ajustement optimal. Pour ce faire, un des moindres carrés linéaire dans Matlab la commande est:

b = X\y 

b sera le vecteur 1x4 contenant a, b, c et d qui est l'approximation des moindres carrés à une solution. Voir ceci matlab reference.

+0

Salut Charles, Merci pour votre réponse, yups .. cela a du sens (je devrais exclure le C si). En simple, l'équation est une équation linéaire avec 4 variables indépendantes (entrées) et 1 variable dépendante (sortie). l'équation est: Xm = aXr + bYr + cXp + dYp où a, b, c, d sont des constantes. Pour trouver ceux a, b, c, d. J'ai 9 valeurs Xm différentes liées à 9 valeurs différentes de Xr, Yr, Xp, Yp. Ce que je dois savoir, c'est s'il y a un moyen simple de trouver a, b, c, d dans matlab. – Bree

+0

Je pense que vous avez encore trop de variables libres. Si vous limitez A et B à des multiples de la matrice d'identité, votre équation devient M = a R + b L où a et b sont simplement des nombres. Ceci est uniquement soluble tant que R et L sont linéairement indépendants.Si R et L ne sont pas linéairement indépendants, alors votre équation est M = D R où D ~ (A + B), et vous êtes de retour à avoir un nombre infini de solutions. –

+0

J'ai eu l'idée, et merci pour cela. Après avoir essayé plusieurs données, il est arrivé à la conclusion et il ne serait pas flexible de simplement calculer le coefficient (a, b, c, d) pour mon système. Je développe le système de suivi du regard sous matlab via webcam. Succeeded avec le suivi de l'oeil, mais ne sais pas comment transformer les positions des yeux dans le regard. dans ma dernière équation, les indices m = monitor, r = pupille droite, l = pupille gauche. Je pense que le moins ne suffira pas pour le système, commencer à essayer de clustering cependant. Encore une fois, merci pour la réponse – Bree

Questions connexes