Change the sign of a particular element in a matrix

on 28 Dec 2012

Muruganandham Subramanian (view profile)

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!

Products

No products are associated with this question.

Muruganandham Subramanian (view profile)

on 28 Dec 2012
Edited by Jan Simon

Jan Simon (view profile)

on 28 Dec 2012
find(A==-1)=1

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

or

A=abs(A)

Azzi Abdelmalek

Azzi Abdelmalek (view profile)

on 28 Dec 2012

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

Muruganandham Subramanian

on 28 Dec 2012

Sorry..Azzi Its

A(A==-1)=1;
Pranjal Pathak

Pranjal Pathak (view profile)

on 9 Jan 2013

Thanks for the answer,it worked out!

Image Analyst (view profile)

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

Jan Simon

Jan Simon (view profile)

on 28 Dec 2012

@Shaun: You can vote this answer, if you find it useful.

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