Simple Vector Indexing Question
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Say I have a vector called Vector that is roughly a 6000x50 double.
I want to pull out certain indexes from that double, deleting the rows that are not in the following start - stop table, like this:
Random Example below:
Start Stop
540 1238
1423 2144
2403 3280
3485 4385
4573 5152
So I want all the data from rows 540 -1238, rows 1423-2144, 2403-3280, 3485-4385, and 4573-5152. I want to delete the rows before 540, after 5152, and in between these windows (i.e. 1238 to 1434).
There must be a simple way to do this, I have been making it way too complicated.
activeVector = Vector ([540:1238]; [1423:2144]; ... etc.
Please let me know if you can help!
1 Commento
Walter Roberson
il 4 Ott 2023
In MATLAB terminology, "vector" is always 1 x something or something x 1. Something that is 6000 x 50 would be called either a "matrix" or an "array"
Risposta accettata
Star Strider
il 4 Ott 2023
Modificato: Star Strider
il 4 Ott 2023
Put all the indices inside one set of square brackets —
Vector = 1:20;
activeVector = Vector([3:7 10:15])
This is a simplified version of what you want to do.
EDIT — (4 Oct 2023 at 17:52)
To delete rows from a matrix, this works similarly —
Matrix = Vector(:)*ones(1,10)
activeMatrix = Matrix([3:7 10:15],:)
.
0 Commenti
Più risposte (1)
Voss
il 4 Ott 2023
M = rand(6000,5);
rows = [
540 1238
1423 2144
2403 3280
3485 4385
4573 5152];
idx = arrayfun(@colon,rows(:,1),rows(:,2),'UniformOutput',false);
M = M([idx{:}],:);
0 Commenti
Vedere anche
Categorie
Scopri di più su Matrix Indexing 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!