# Code Question

Discussion in 'Mac Programming' started by dukebound85, Mar 1, 2012.

1. ### dukebound85 macrumors P6

Joined:
Jul 17, 2005
Location:
5045 feet above sea level
#1
I am trying to do the following.

I have a 7670 array of data
I also have complimentary arrays that are 7670 in length that are the day, month, and year

For instance
data = [1,7670] = [.3,.45,.56,.67, etc].....to index 7670 with just data values
day = [1,2,3,4,5...31,1,2,3,4,....28,1,2,3,4....30] repeating for 7670 indexes. These are the value of the days in the particular month
month = [1,1,1,1,1,(31 times), 2,2,2,2,2,2,(28 times), etc] for 7670 indexes
year = [1980,1980,1980, (365 times), 1981,1981, (365 times),] etc for 7670 indexes

My question is how can I take this daily data and average it for each month...so my 7670 array is about 650 in length

Here is what I have right now. This is matlab
Code:
```count = 1;
for i=1:7670
if i < 7670
while day(i+1)>day(i)
k = 1;
index(count,k) = day(i);
k = k+1;
end

u300_PC1_monthly_avg(count) = mean(u300_PC1(index(count,1):size(index,2)));
count = count+1;
i = i+1;
end
end```

### Staff Member

Joined:
Aug 16, 2005
Location:
New England
#2
I'd create a new data array and loop over year then month (nested loops).

Every time you get a change in year or month increment the index of the new structure and start a new average.

Does that help?

EDIT: (Sorry, I missed that it was MATLAB).

You could easily use a sparse matrix instead of the indexed one. Just use Year*100+Month as the index for the sparse matrix. This gives you an easy way to look up the data too.

B

3. ### dukebound85 thread starter macrumors P6

Joined:
Jul 17, 2005
Location:
5045 feet above sea level
#3

Sort of. I feel like I could avoid loops but just having a hard time implemeting the logic in my code

### Staff Member

Joined:
Aug 16, 2005
Location:
New England
#4

That gives you a single variable to loop over.

B

5. ### dukebound85 thread starter macrumors P6

Joined:
Jul 17, 2005
Location:
5045 feet above sea level
#5
Thanks for the suggestion