Effacer les filtres
Effacer les filtres

I need some help to solve non-linear equation with three unknowns and three knowns with having 170 different values for one known.

1 vue (au cours des 30 derniers jours)
Xw, Yw, Zw (170 * 1 matrices) are known with 170 different values.
Xe, Ye, Ze are the unknowns.
Tx, Ty, Tz, Rx, Ry, Rz, and neta are some of other knowns.
I want to find the values for Xe, Ye, and Ze.

Réponse acceptée

Torsten
Torsten le 21 Fév 2024
Modifié(e) : Torsten le 21 Fév 2024
M = [eta+1,Rz,-Ry;-Rz,eta+1,Rx;Ry,-Rx,eta+1];
M = repmat(M,170,1);
b = [];
for i = 1:170
b = [b;Xw(i)-Tx;Yw(i)-Ty;Zw(i)-Tz];
end
sol = M\b;
Xe = sol(1)
Ye = sol(2)
Ze = sol(3)
  6 commentaires
Torsten
Torsten le 23 Fév 2024
:-)
M = [eta+1,Rz,-Ry;-Rz,eta+1,Rx;Ry,-Rx,eta+1];
dM = decomposition(M);
Xe = zeros(170,1);
Ye = zeros(170,1);
Ze = zeros(170,1);
for i = 1:170
b = [Xw(i)-Tx;Yw(i)-Ty;Zw(i)-Tz];
sol = dM\b;
Xe(i) = sol(1);
Ye(i) = sol(2);
Ze(i) = sol(3);
end

Connectez-vous pour commenter.

Plus de réponses (2)

Prabhath Manuranga
Prabhath Manuranga le 28 Fév 2024
Modifié(e) : Prabhath Manuranga le 28 Fév 2024
g_mean = g_i + 0.0424*H_i % Equation 01
H_i = (W_lvd - W_i)/g_mean % Equation 02
Here g_i, H_i, and W_i is known.
W_lvd is unkonwn.
There are 172 row values per g_i and H_i (170 by 1 matrix).
How to solve this?
  1 commentaire
Torsten
Torsten le 28 Fév 2024
W_lvd = H_i.*(g_i+0.0424*H_i)+W_i
if you want W_lvd as a 170x1 matrix
W_lvd = 1/170*sum(H_i.*(g_i+0.0424*H_i)+W_i)
if you want W_lvd as the best approximate value for the vector values H_i.*(g_i+0.0424*H_i)+W_i

Connectez-vous pour commenter.


Prabhath Manuranga
Prabhath Manuranga le 12 Mar 2024
Modifié(e) : Walter Roberson le 12 Mar 2024
X_ISMD = 995152.969208341;
Y_ISMD = 996113.117131325;
for i = 1:length(data1)
D1(i) = sqrt((X_ISMD - X_WGS84(i)).^2 + (Y_ISMD - Y_WGS84(i)).^2);
end
D1
length(data1) is 172. X_WGS84(i) and Y_WGS84(i) are 172 by 1 matrix. according to the above matlab code i ma getting following output (1 by 172 matrix). but i want to have 172 by 1 matrix. could you please suggest where should i change in my code? Thanks.
D1 =
Column 1
140911.995295475
Column 2
123232.133401588
Column 3
115208.35805542
Column 4
93127.1628328772
  1 commentaire
Walter Roberson
Walter Roberson le 12 Mar 2024
X_ISMD = 995152.969208341;
Y_ISMD = 996113.117131325;
D1 = zeros(length(data1),1);
for i = 1:length(data1)
D1(i) = sqrt((X_ISMD - X_WGS84(i)).^2 + (Y_ISMD - Y_WGS84(i)).^2);
end
D1

Connectez-vous pour commenter.

Catégories

En savoir plus sur Get Started with Curve Fitting Toolbox dans Help Center et File Exchange

Produits


Version

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by