Pixel size iteration for loop

I'm trying to calculate the area of a pixel (1 deg x 1 deg) on a spherical figure (earth) based on the equation
Aring = 2πR^2|sin(lat1) sin(lat2)| (R=6371 km^2)
for latitudes between -90 and 90. I think I need to implement some sort of for loop such as below. I think my lack of knowledge on the use of for loops is causing me error when implementing this code. I'm trying to output a matrix that has the area for a ring around the earth between every degree of latitude (180x360). Can anyone help point me in the right direction?
for ii = -90:90
AreaArray(ii,:) = 2*pi*(6371^2)*abs(sin(ii*pi/180)-sin((ii-1)*pi/180))
end

답변 (1개)

Walter Roberson
Walter Roberson 2016년 10월 2일

0 개 추천

There is nothing obviously wrong with that loop.
If you have not initialized AreaArray before you start the for loop, then because the right hand side is a scalar, you would end up creating a column vector of values.
If you initialize AreaArray to have multiple columns, then each iteration of the for loop will set all of those columns for a row to be copies of the same value, as many copies as you have columns. As the formula appears to be independent of longitude that should be fine.

댓글 수: 2

Dude
Dude 2016년 10월 3일
편집: Dude 2016년 10월 3일
Suppose I do this by adding AreaArray above the for loop. When I run this, I receive the error "Subscript indices must either be real positive integers or logicals." Any idea why? Sorry for the elementary question.
for AreaArray = [-90:1:90]
ii = -90:90
AreaArray(ii,:) = 2*pi*(6371^2)*abs(sin(ii*pi/180)-sin((ii-1)*pi/180))
end
iivals = -90:90;
for idx = 1 : length(iivals)
ii = iivals(idx);
AreaArray(idx,:) = 2*pi*(6371^2)*abs(sin(ii*pi/180)-sin((ii-1)*pi/180));
end

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

질문:

2016년 10월 2일

댓글:

2016년 10월 3일

Community Treasure Hunt

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

Start Hunting!

Translated by