MATLAB Array Operations

1. Jul 7, 2008

hoffmann

Hi,

How can I find the following from an array with entries of 0, 1, and >1:

Find the sum of all the entries in the matrix that are not equal to 0.
Find the sum of all the entries in the matrix.
Find the sum of all the zero and 1 entries in the matrix.
How to remove the entries in the matrix that are not equal to 0, one by one.

Thanks!

2. Jul 7, 2008

hoffmann

I guess I can simplify my question:

I have a matrix A that contains values of 0, 1, and values that are greater than one. I need to remove the entries in the matrix that are greater than 1 until the number of values that are 0 and 1 outnumber the number of values that are greater than 1. Then I need to display the new matrix B that contains the result of the aforementioned operation.

Hope that helps and thanks in advance!

3. Jul 7, 2008

hoffmann

Alright, so I have this so far:

function[newInteractions]=prune(interactions)

while( sum(interactions(interactions~=0)) > sum(interactions(interactions<=1)) )

i=max(interactions);

interactions(i)=[];

end

newInteractions=interactions;

I have a feeling that this can be improved in terms of speed -- the max function seems to be very slow. Can this be improved?

4. Apr 27, 2009

jwiix

Hi

If you array is something like:

A=[1 0 0 0 1 0 1 0 25 5 8 69 0 0 1 0 1 0 1 1 1 1 0 4 7 0 1]

A quick way to remove all the bumf greater than 1 in your array is:

A(A>1)=[];

______