Changing numbers in a matrix by checking values

Dear all,
I have the following 3x50 Matrix wiht true and false values:
Ende =
0 1 0
0 0 0
0 1 0
0 0 1
1 0 1
0 0 1
1 0 1
0 0 1
1 0 1
1 1 1
0 0 1
0 1 0
0 0 0
0 0 1
0 0 1
0 1 0
1 1 0
0 1 0
0 1 0
0 0 1
0 0 0
0 0 0
1 0 1
0 0 0
1 0 1
1 0 1
1 0 1
0 1 0
0 1 0
1 0 1
0 0 0
0 0 1
1 1 1
0 1 0
0 0 1
1 1 1
0 0 1
0 1 0
0 1 0
0 0 0
0 1 0
0 1 0
0 0 0
0 0 1
0 0 1
0 0 1
1 0 1
0 0 1
0 0 0
0 1 0
In every line with 1 1 0 or 1 1 1: If in column 3 the value is 0 than I need to change the value in column 2 into 0 --> I want to make in the matrix out of 1 1 0 , a new updated line 0 1 0. Same for 1 1 1 --> I want to change those lines into 1 0 1.
Is anyone around who could help on this?
Cheers, Felix

1 Comment

change the value in column 2 into 0 --> I want to make in the
matrix out of 1 1 0 , a new updated line 0 1 0
This changes the first column, not the second one.

Sign in to comment.

Answers (2)

[EDIT]
a = [0 1 0;1 0 1];
[l0,ii] = ismember(Ende,[1 1 0;1 1 1],'rows');
Ende(l0,:) = a(ii(l0),:);

2 Comments

Thanks for the quick response, I copied the code, but I got not the result i hoped to get, the matrix is not changing :/

Sign in to comment.

In Matlab >= R2016a:
index = (Ende == [1 1 0]);
Ende(index, 1) = 0;
index = (Ende == [1 1 1]);
Ende(index, 2) = 0;

Products

Asked:

on 20 May 2017

Answered:

Jan
on 21 May 2017

Community Treasure Hunt

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

Start Hunting!