# identifying entry elements in rows of logical matrix

1 Ansicht (letzte 30 Tage)
julian gaviria am 25 Jan. 2023
Kommentiert: Dyuman Joshi am 27 Jan. 2023
I want to identifiy the entry elements (i.e., the first "1" value) in the rows of the following logical matrix
input_matrix = [1 1 1; 0 1 1; 0 0 0; 0 1 0];
the expected matrix would be the following:
output_matrix = [1 0 0; 0 1 0; 0 0 0; 0 1 0];
The position of the "entries" (first "1" values) in both input and output matrices is respected. Also, Further "1" values (following the entries) have been replaced with "0" values.
Thanks in advance for any hint.
##### 2 KommentareKeine anzeigenKeine ausblenden
Dyuman Joshi am 26 Jan. 2023
Bearbeitet: Dyuman Joshi am 26 Jan. 2023
@julian gaviria Just a note -
My and Stephen's code did exactly what was asked.
You should have clarified what exactly you wanted, in your question statement. The comments on my code clearly indicated what the code does, and you should have picked up from them that it is not what you want to do and mentioned it in reply to that.
I will be deleting my solution.
julian gaviria am 26 Jan. 2023
Thank you @Dyuman Joshi

Melden Sie sich an, um zu kommentieren.

### Akzeptierte Antwort

Stephen23 am 25 Jan. 2023
Bearbeitet: Stephen23 am 26 Jan. 2023
A = [1,1,1;0,1,1;0,0,0;0,1,0]
A = 4×3
1 1 1 0 1 1 0 0 0 0 1 0
B = A .* (cumsum(A,2)==1) % replace .* with & to get a logical output
B = 4×3
1 0 0 0 1 0 0 0 0 0 1 0
##### 11 Kommentare9 ältere Kommentare anzeigen9 ältere Kommentare ausblenden
Fangjun Jiang am 26 Jan. 2023
Isn't it funny that my solution was correct after all?
Dyuman Joshi am 27 Jan. 2023
MATLAB works in mysterious ways XD

Melden Sie sich an, um zu kommentieren.

### Weitere Antworten (1)

Fangjun Jiang am 25 Jan. 2023
in = [1 1 1; 0 1 1; 0 0 0; 0 1 0];
M=size(in,1);
temp=[zeros(M,1), in];
d=diff(temp,1,2);
out=(d==1)
out = 4×3 logical array
1 0 0 0 1 0 0 0 0 0 1 0
##### 3 Kommentare1 älteren Kommentar anzeigen1 älteren Kommentar ausblenden
Dyuman Joshi am 25 Jan. 2023
This wouldn't work if there is a 1 after a 0
in = [1 1 0 1; 0 1 1 1; 0 0 0 0; 0 0 1 0];
M=size(in,1);
temp=[zeros(M,1), in];
d=diff(temp,1,2);
out=(d==1)
out = 4×4 logical array
1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0
Fangjun Jiang am 25 Jan. 2023
You are right!

Melden Sie sich an, um zu kommentieren.

### Kategorien

Mehr zu Logical finden Sie in Help Center und File Exchange

R2022b

### Community Treasure Hunt

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

Start Hunting!

Translated by