delete certain elements in a matrix
古いコメントを表示
Is there any way to delete certain rows(with a pattern) in a matrix
like to delete rows 1,6,11,21,26,..... using a loop
Thanks.
採用された回答
その他の回答 (2 件)
In a loop? Not really.
All at once? Absolutely.
DATA = rand(50,5);
rowsToDelete = [1,6,11,21,26];
DATA(rowsToDelete,:) = [];
If you mean that your rows to delete has the pattern of rows 1,6,11,16, etc, then just do this:
numRows = size(DATA,1);
rowsToDelete = [1:10:numRows 6:10:numRows];
DATA(rowsToDelete,:) = [];
3 件のコメント
dav
2013 年 3 月 14 日
Jan
2013 年 3 月 14 日
This is much faster than a loop for large arrays. Shrinking arrays in a loop has the same drawback as letting them grow: In each iteration the new array must be allocated and the contents of the old one is copied. This is very expensive.
dav
2013 年 3 月 14 日
Jan
2013 年 3 月 14 日
Alternative to Sven's approach:
Data = rand(50,5);
index = false(1, 50);
index(1:10:end) = true;
index(6:10:end) = true;
Data(index, :) = [];
カテゴリ
ヘルプ センター および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!