Asked by Pranjal Pathak
on 28 Dec 2012

Hi, I have a problem in the following matrix: A=[ -1 1 0 0 0 0; 0 -1 1 0 0 0 ; 0 0 -1 1 0 0; 0 0 0 0 -1 1 ; 0 0 0 0 0 -1 ; 0 0 0 0 0 0];

In the above matrix, I need to change only the element -1 by +1, while others remaining the same. For, small matrix, it is possible by defining the row and column elements but for large matrix, is there any way of doing it programatically in matlab as the dimension of the matrix may be larger than this. Please help me in this regard.

Thanking You!

*No products are associated with this question.*

Answer by Muruganandham Subramanian
on 28 Dec 2012

Edited by Jan Simon
on 28 Dec 2012

Accepted answer

find(A==-1)=1

[EDITED, Jan, copied from comments] Better: A(A==-1)=1;

or

A=abs(A)

Azzi Abdelmalek
on 28 Dec 2012

`find(A==-1)=1` will not change A. That will create a variable **find**

Answer by Image Analyst
on 28 Dec 2012

What do you mean change it by +1? Do you mean change it **TO** +1, or change it by +1 **by adding +1** to the -1 so that you get 0? Here's three different ways to do the two possible meanings of your question:

A = [ -1 1 0 0 0 0; 0 -1 1 0 0 0 ; 0 0 -1 1 0 0; 0 0 0 0 -1 1 ; 0 0 0 0 0 -1 ; 0 0 0 0 0 0] A(A == -1) = 1

A = [ -1 1 0 0 0 0; 0 -1 1 0 0 0 ; 0 0 -1 1 0 0; 0 0 0 0 -1 1 ; 0 0 0 0 0 -1 ; 0 0 0 0 0 0] A(A == -1) = 0

A = [ -1 1 0 0 0 0; 0 -1 1 0 0 0 ; 0 0 -1 1 0 0; 0 0 0 0 -1 1 ; 0 0 0 0 0 -1 ; 0 0 0 0 0 0] elementsToChange = A == -1; A(elementsToChange) = A(elementsToChange) + 1

Shaun VanWeelden
on 28 Dec 2012

Image Analyst, your always so thorough in your answers, I love it

Opportunities for recent engineering grads.

## 0 Comments