業特定の行の削除(ある行まで)
16 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
約100000×3の以下の添付写真のような行列があります。
1列目、2列目はある画像のX,Y座標を記録しており、どちらも0と記録されている箇所もあります。
3列目は1か0が並んでおります。
やりたいこととしては、
①1行目から順番に1,2列目の数値を見ていき初めて0ではない数値(写真では(x,y)=(278,564))が出てくる行までを削除
この時、1,2列目の数値で0出ない行が出て以降の行で、0を含む行は削除しないようにしたいです
②残った行列から、3列目が0の行のみを削除
上記二つを順番に行うことを目標にしております。
matlab初心者でして、idxやfor+breakなどでも試しましたが思ったようにいかず…どのようにしたらできるのか教えていただけますでしょうか?
説明の至らない箇所がございましたらご質問ください。
よろしくお願いいたします。
0 comentarios
Respuestas (1)
Hernia Baby
el 25 de Mzo. de 2022
まずはデータを作ります
clc,clear;
A = zeros(50,3);
n = 20;
A(1:n+10,3) = 1;
A(n+1:end,1:2) = randi([1,30],[50-n, 2]);
A(end-5:end-2,1:2) = 0;
A(n+15:end,3) = 1
条件式より最初に0じゃない場所を見つけます
idx = A(:,1:2) ~= 0;
num = find(idx);
n1 = num(1)
最初から0じゃない場合も考慮して、if分を設けてます
if n1 ~= 1
A(1:n1-1,:) = []
end
3列目で0がある部分を消します
idx2 = A(:,3) == 0;
A(idx2,:) = []
最後の7行分を見てみましょう
disp(A(end-6:end,:))
0があっても消えていないことが確認できました
Ver también
Categorías
Más información sobre コンピューター ビジョンと Simulink en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!