How do i count the no of ones of 3D matrix?

  1. I have a big 3-D matrix, say 272*272*272, but contains either 0 or 1; how do i count the number of ones?
  2. In my project, i need to form a 8*8*8 cube (that why i choose the matrix is 272*272*272). How can i cut this big matrix into 8*8*8 and assign a index for every cube(8*8*8)?

2 Comments

Why do you need an index? What's wrong with the x,y,z value of the center? What are you going to do? Would you like to use blockproc()?
i want to perform 3d dct so, i need to build a block of size 8*8*8. Do we need to assign an index so that i can reconstruct them ?

Sign in to comment.

 Accepted Answer

If A is your array
no1=sum(A(:))
For second question
A=rand(272,272,272);
idx2=8:8:272;
idx1=[1 idx2(1:end-1)+1];
n=numel(idx1);
[ii,jj,hh]=ndgrid(1:n,1:n,1:n);
out=arrayfun(@(x,y,z) A(idx1(x):idx2(x),idx1(y):idx2(y),idx1(z):idx2(z)),ii,jj,hh,'un',0);

1 Comment

Thank you. Before i cut the big matrix, all value in this matrix is either 1 or 0; say 3XXXX ones in that matrix. After cutting them into 8*8*8 I still have a problem, the out is 34*34*34 blocks, each block is 8*8*8, how can i count the number of 1?

Sign in to comment.

More Answers (0)

Categories

Tags

Asked:

on 22 Nov 2013

Commented:

on 23 Nov 2013

Community Treasure Hunt

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

Start Hunting!