I need help with programming in MATLAB. I having trouble with the following for loop. Can you modify my code so I get a satElevation with 11 different values. lat = 0:10; long = 0:10; nHorizon = [0.1;0.2;0.3]; for i = 1:length(lat) % Constants a = 6378.137; % semi-major axis of the Earth f = 1/298.257223563; % flattening factor alt = i; % Calculate the radius of curvature in the prime vertical (N) N = a ./ sqrt(1 - f * (2 - f) * sind(lat).^2); % Calculate ECEF coordinates x_ecef(i) = (N + alt) .* cosd(lat(:,i)) .* cosd(long(:,i)); y_ecef(i) = (N + alt) .* cosd(lat(:,i)) .* sind(long(:,i)); z_ecef(i) = (N * (1 - f) + alt) .* sind(lat(:,i)); recef(:,:,i) = [x_ecef(:,i) y_ecef(:,i) z_ecef(:,i)]'; % Elevation rGS2Sat(:,i) = recef(:,:,i) - rGS % Vector from station to satellite satElevation(i) = 90 - acosd(dot(rGS2Sat(:,i),nHorizon.*ones(3,i))./(norm(rGS2Sat(:,i)).*norm(nHorizon.*ones(3,i)))) end
I need help with programming in MATLAB. I having trouble with the following for loop. Can you modify my code so I get a satElevation with 11 different values.
lat = 0:10;
long = 0:10;
nHorizon = [0.1;0.2;0.3];
for i = 1:length(lat)
% Constants
a = 6378.137; % semi-major axis of the Earth
f = 1/298.257223563; % flattening factor
alt = i;
% Calculate the radius of curvature in the prime vertical (N)
N = a ./ sqrt(1 - f * (2 - f) * sind(lat).^2);
% Calculate ECEF coordinates
x_ecef(i) = (N + alt) .* cosd(lat(:,i)) .* cosd(long(:,i));
y_ecef(i) = (N + alt) .* cosd(lat(:,i)) .* sind(long(:,i));
z_ecef(i) = (N * (1 - f) + alt) .* sind(lat(:,i));
recef(:,:,i) = [x_ecef(:,i) y_ecef(:,i) z_ecef(:,i)]';
% Elevation
rGS2Sat(:,i) = recef(:,:,i) - rGS %
satElevation(i) = 90 - acosd(dot(rGS2Sat(:,i),nHorizon.*ones(3,i))./(norm(rGS2Sat(:,i)).*norm(nHorizon.*ones(3,i))))
end
Trending now
This is a popular solution!
Step by step
Solved in 4 steps with 3 images