double for loop is possible?

2 visualizaciones (últimos 30 días)
David
David el 20 de Dic. de 2023
Editada: David el 20 de Dic. de 2023
I need to calculate M but I have a and e_ and I want to put them inside equation at the same time. When I write double for loop and press run I get to much answers. If I have only one 'for' then I get 4 answers as expected, but with two for loops I think I get double answers. Is using double for loop more complicated as I am doing or what is the problem here
for a = [6378137.000,6378137.000,6377397.155,6378136.000]
for e_ = [0.0818191910428151,0.0818191908426216,0.0818191908426216,0.0818191065283643]
M = (a *(1-(e_)^2)) / (sqrt(1-(e_)^2) * (sin(fi))^2)^3
end
end

Respuesta aceptada

Dyuman Joshi
Dyuman Joshi el 20 de Dic. de 2023
You don't need to use a double for loop here, as it goes through all possible combinations of elements of a and e_ (a(1) & e(1), a(1) & e(2), a(1) & e(3), and so on, total 16 combinations), which is not what you want.
A double for loop is not complicated but it is not required here. A single for loop is what you need.
Additionally, a simpler approach is to vectorize the code -
a = [6378137.000,6378137.000,6377397.155,6378136.000];
e_ = [0.0818191910428151,0.0818191908426216,0.0818191908426216,0.0818191065283643];
%Random value
fi = pi/3;
%Change the display format
format long g
M = (a.*(1-(e_).^2)) ./ (sqrt(1-(e_).^2) .* (sin(fi))^2).^3
M = 1×4
1.0e+00 * 15169407.1131592 15169407.112909 15167647.5066156 15169404.6292128
Note the use of element-wise operators .*, ./ and .^
For more info, refer to - Vectorization, Array vs Matrix Operations
  1 comentario
David
David el 20 de Dic. de 2023
Editada: David el 20 de Dic. de 2023
yeah you are right, I over complicated . thanks

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by