使用matlab根据条件过滤数据

时间:2016-10-26 10:29:27

标签: arrays matlab for-loop

我的值为ref

ref = [9.8 13 10.51 12.2 10.45 11.4]

In值为

In = [10.7 11 11.5 11.9 12]

我想做两件事:

  1. 确定哪个In值最接近ref值,然后
  2. 检查匹配的In值是否低于或高于ref值。如果它低于在array1中保存并且如果它高于在array2中保存的

2 个答案:

答案 0 :(得分:1)

请参阅以下代码段作为众多解决方案之一:

% it would be a much better style 
% to initialize the result vectors here properly!
a1 = [];
a2 = [];

for i=1:length(P_in)
    [value, ind] = min(abs(P_in(i) - P_ref));

    if P_in(i) <= P_ref(ind)
        a1 = [a1 P_in(i)];
    else
        a2 = [a2 P_in(i)];
    end;
end;

使用给定的向量

P_ref = [9.8 13 10.51 12.2 10.45 11.4];
P_in = [10.5 11 11.5 11.9 12];

我得到以下结果:

array1 = [10.5000   11.0000   11.9000   12.0000]
array2 = [11.5000]

答案 1 :(得分:0)

如果您有一个允许值“关闭”的固定偏差,则可以使用ismemberf File Exchange Submission解决问题的关键部分。

基本语法:

UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent

可以通过定义允许的容差来扩展:

[tf, loc]=ismemberf(0.3, 0:0.1:1)