Filter löschen
Filter löschen

Simple Vector Indexing Question

1 Ansicht (letzte 30 Tage)
Emma Walker
Emma Walker am 4 Okt. 2023
Beantwortet: Voss am 4 Okt. 2023
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 Kommentar
Walter Roberson
Walter Roberson am 4 Okt. 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"

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Star Strider
Star Strider am 4 Okt. 2023
Bearbeitet: Star Strider am 4 Okt. 2023
Put all the indices inside one set of square brackets —
Vector = 1:20;
activeVector = Vector([3:7 10:15])
activeVector = 1×11
3 4 5 6 7 10 11 12 13 14 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)
Matrix = 20×10
1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10
activeMatrix = Matrix([3:7 10:15],:)
activeMatrix = 11×10
3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 11 11 12 12 12 12 12 12 12 12 12 12 13 13 13 13 13 13 13 13 13 13 14 14 14 14 14 14 14 14 14 14
.

Weitere Antworten (1)

Voss
Voss am 4 Okt. 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{:}],:);

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Tags

Produkte


Version

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by