Matlab isoutlier与南

12个视图(30天)
兰德尔
兰德尔 2017年11月11日
评论道: 明星黾 2017年11月11日
你好,我有一个数组,如arraywNan =[南南16 2000 2400 3214 2955;3951年5211 3265 4328南南18]。我需要“isoutlier”发现异常值只考虑non-NaN值或实数。在上面的示例中,我需要最终结果离群值= (0 0 1 0 0 0 0;0 0 0 0 0 0 1)。我的结果使用“isoutlier”显示所有零(显示没有异常值)在考虑上面的数组,使用“中值”作为参数沿每一行“isoutlier”维度。有更好的方法吗?提前谢谢你!

接受的答案

明星黾
明星黾 2017年11月11日
实验:
arraywNan =[南南16 2000 2400 3214 2955;5211 3265 4328 3951年南南18];
异常值% = [0 0 1 0 0 0 0;0 0 0 0 0 0 1);
tmp = arraywNan;
中数= nanmedian (tmp (:));
tmp (isnan (tmp)) = mdn;
LV1 = isoutlier (tmp,“中值”2);%与南设置为“nanmedian”
LV2 = isoutlier (arraywNan,“中值”2);%与南不变
首先,您需要测试异常值沿行(维度 2 (默认),而不是列维度 1 )。
“LV1” 逻辑矩阵是你想要的,尽管它需要设置 nanmedian 第一。的 isoutlier 函数适用于 值,但是文档没有提到如何处理它们。它不给你你想要的结果(在 “LV2” )。
2的评论
明星黾
明星黾 2017年11月11日
我的代码插入 “中数” 在的地方 “tmp” 数组中。它取代他们在整个矩阵,使用“逻辑索引”,与逻辑数组提供的 isnan (tmp) 。数组的大小都没有区别。
把你的大数组 “arraywNan” 在我的代码。这将是你想要的结果。

登录置评。

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!