Unique function with rows and 'first' as arguments
Mostrar comentarios más antiguos
Hello guys!
I have a 90002x6 matrix called "timeVec" with the following format:
2023 2 6 0 0 0
2023 2 6 0 0 0.01
2023 2 6 0 0 0.02
...
...
2023 2 6 0 15 0.01
I am trying to understand the following command:
[~,tInd,~] = unique(timVec(:,4:5),'rows','first')
The resulting tIndi s a 16x1 matrix with the following values:
1
6001
12001
18001
24001
...
...
90001
Thanks!
Respuestas (1)
Walter Roberson
el 18 de Feb. de 2023
1 voto
The code is locating the first row in which each combination of hour and minute occurs.
There are other implementations, such as looking at whether diff(timVec(:,4)*60+timVec(:,5)) is non-zero . Unless, that is, the entries are out of order -- if they are potentially out of order you should probably also be using the 'stable' option of unique()
3 comentarios
Akis Drosinos
el 18 de Feb. de 2023
Steven Lord
el 18 de Feb. de 2023
Row 1 is the first row of timeVec whose 4th and 5th elements is not the same as any previous row.
Row 6001 is the second row of timeVec whose 4th and 5th elements is not the same as any previous row. If I had to guess based on your pattern I'd say it contains [2023 2 6 0 1 0].
Row 12001 of timeVec is likely [2023 2 6 0 2 0].
Akis Drosinos
el 18 de Feb. de 2023
Editada: Akis Drosinos
el 18 de Feb. de 2023
Categorías
Más información sobre Resizing and Reshaping Matrices en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!