大きな三角行列があります。
これには、さまざまな色でマークされた関連データがあります。緑がかった黄色がかった輪郭でマークされたポイントを条件付きで削除したい:
- 非線形オブジェクトの領域で貪欲に削除します
- 50% の確率で線形オブジェクトの領域を遅延除去します。
私の試み
シャイさんのコメントをもとに走ります
% remove linear things on nonlinear area lazily: matrix(97:103, 1:98)
% remove linear things greedily elsewhere
for row=0:97
for column=0:111
% Lazy removal
if and(row > 97, row < 104)
if and(column > 0, column < 98)
if randn > 0
matrix( matrix < 9 ) = 0;
end
end
end
% Greedy removal
if or(column < 97, column > 104)
% Remove all points in these regions because no linear objects here
matrix(:, 1:97) = 0;
matrix(:, 104:111) = 0;
end
end
end
私は得る
これは無条件の削除よりもはるかに優れています
ただし、遅延削除の条件付き部分は改善することができます。ここではShaiの短いバージョンを使用できないと思います。条件付きの削除があるため、ネストされたループを使用する必要があります。
contour(matrix, clines)
非線形オブジェクトが線形オブジェクトもカバーするため、等高線は使用できません。したがって、貪欲な削除と怠惰な削除のために、図の特定の領域を選択して条件付きで削除する必要があります。Daniel R のコマンド はcontour(...,'ShowText','on')
、ここでは役に立たないようであり、単純に値で削除することはできません。次の図は 111 個の特異点があるはずなので、おそらく特異点であるゼロ点を示していると思います。
次の図は、データの特異点またはゼロ値のみを示していますか?
線形オブジェクトの領域に特定の除去ルールを適用するにはどうすればよいですか?
Matlabの三角行列で緑がかった黄色がかった色でマークされているポイントを条件付きで削除するにはどうすればよいですか?