How do I sum over one dimension of a multidimensional array?

조회 수: 32 (최근 30일)
Nesha Wright
Nesha Wright 2018년 6월 21일
댓글: Louis-Philippe Guinard 2021년 3월 25일
I have four dimensions in a netcdf file: lat, long, sector and time. I want to sum over JUST sector. Is there a simple command to do this?

채택된 답변

Adam Danz
Adam Danz 2018년 6월 21일
편집: Adam Danz 2018년 6월 21일
Are you using ncread() or something similar to load the variable into the matlab workspace? If the variable is a matrix, you can use the 2nd input to sum() to sum across a specified dimension.
Example:
r = rand(5,4,3,2); %4D data
squeeze(sum(r,3)) %sums across the 3rd dim.
Squeeze() just removes the extra singleton dimensions.
  댓글 수: 2
Nesha Wright
Nesha Wright 2018년 6월 21일
I think this would work. Is there a way to tell what order the dimensions are in?
Walter Roberson
Walter Roberson 2018년 6월 21일
ncinfo can give you information about the order the variables are in the file. But be careful because nc files are "row major" instead of "column major" -- that is, the memory storage varies most quickly across rows instead of down columns. Because of this it is common that you need to use permute() on the result of ncread() to get the data order you expect. For example,
TheArray = permute(TheArray, [2 1 3 4]);
When you are working with ncf data sets it is useful to pay close attention to the array sizes you get back compared to the length of the marginal index, to determine whether your first two dimensions need to be exchanged or not.

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

추가 답변 (1개)

Juan Fernandez
Juan Fernandez 2018년 6월 21일
Yes, there is a simple single command. Use the sum(A,dim) function. If this is not working, then provide additional information and perhaps I can be of more assistance.
  댓글 수: 5
Adam Danz
Adam Danz 2021년 3월 24일
> if I wanted to sum, say, just the N first elements of the 3rd dimension, how would one go about that?
sum(x(:,:,1:N), 3)
Louis-Philippe Guinard
Louis-Philippe Guinard 2021년 3월 25일
I wasn't too far off, I did sum(x(:,:,1:N)) and returned a 1x256xN array. Aight thanks a lot! :)

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

카테고리

Help CenterFile Exchange에서 Creating, Deleting, and Querying Graphics Objects에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by