MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

# check if whole matrix zero

Asked by Light on 7 Jun 2013

```A=[-1,1,1;0,-1,0;0,0,-1;1,0,0]
```
```if ~sum(A(:))   % this iteration will be continued until whole matrix zero 0
```
`   f = find(any(A==-1,2)); % i have to find row which including only one -1, if found 2 or more, i have to pick just one of them in that iteration. How can i find it?`
```% in one column only one -1 and 1. then after find row with only one -1, i have to add it to the row with 1 which is staying with one column. It is the way my matrix will be zero.
```

2nd row which including only one -1 is added to the first row. after that:

```A=[-1,0,1;0,0,0;0,0,-1;1,0,0]
```

If all whole matrix not zero. then will be iterated again. Please give me some clue. Help me!

Light on 7 Jun 2013

My savers it can be answered one by one.

How can i use if function to iterate it. Give me some structure please

## Products

No products are associated with this question.

Answer by Walter Roberson on 7 Jun 2013
```while true
if (the ending condition is met)
break
end
rownum = index of one row that has exactly one -1
neg1idx = column index of -1 in row number rownum
plus1rownum = row index of row that has +1 in column number negidx
A(plus1rownum,:) = A(plus1rownum,:) + A(rownum, :);
end
```

It is, however, highly recommended that you add protections in case the input matrix is not structured the way you expect.

Image Analyst on 7 Jun 2013

A matrix could sum to zero without every element being zero. If you want every element being zero, you need to take abs() before summing, or use nnz().

Walter Roberson on 7 Jun 2013
```~any(M(:))
will be true if M is entirely 0
```

Using nnz is a good idea:

```nnz(M) == 0
```

will be true if M has only 0's in it.

Hugo on 7 Jun 2013

Using the terminology of Walter Roberson but simpler

```while ~(ending condition is met)
% Include the iteration code here
end
```

As mentioned in the previous comments, be careful with the ending condition

1) If you write

```while sum(A(:)
```

the code will iterate until all elements of A add up to zero. This can occur, however, even if not all elements of A are zero.

2) If you write either

```while sum(abs(A(:)))
```

or

```while any(A(:))
```

then the code will iterate until all elements of A are zero (not just their sum).

NOTICE that in your comment to Walter Roberson answer, the condition if sum(A(:)) lets the iteration continue unless the sum of the elements of A is different from zero, which I think is not exactly what you want, or is it?

Best regards