我有大三角矩阵。
其中有不同颜色标记的相关数据。我想有条件地删除由黄绿色轮廓标记的点:
- 贪婪地去除非线性物体的区域
- 在概率为 50% 的线性对象区域上懒惰地移除
我的尝试
我根据 Shai 的评论运行
% 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 三角矩阵中以黄绿色标记的点?