How to remove rest of the rows of a Column once it reaches a certain value

2 visualizzazioni (ultimi 30 giorni)
I have an autocorrelation function that needs to be integrated only up to where the time threshold first drops below Zero.
So I have a matrix such as A = [ 1 2 7 -2 0 2 9 1 2 0 9 -5].
I want to get A1 = [ 1 2 7 ].
How can I do this?

Risposte (1)

Walter Roberson
Walter Roberson il 28 Giu 2021
AZ = A(find(~A,1)-1)
However, find can be a bit heavy. Sometimes it can be faster to do
AZ = A(1:sum(cumprod(logical(A))))
This processes the entire vector multiple times, but sometimes it can be better than find. Especially if you have a 2D array that you want to do this kind of selection for on a per-row or per-column basis.
  2 Commenti
Avik Mahata
Avik Mahata il 28 Giu 2021
Modificato: Avik Mahata il 28 Giu 2021
Thanks a lot for the reply. I just tried the second command and its giving me
AZ =[ 1 2 7 -2]
I wanted get AZ =[ 1 2 7]

Accedi per commentare.

Categorie

Scopri di più su Matrices and Arrays in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by