如何在Matlab中过滤一定阈值内的数据?

如何在Matlab中过滤一定阈值内的数据?,matlab,filter,signals,outliers,threshold,Matlab,Filter,Signals,Outliers,Threshold,删除1.2以上和-1.2以下的数据 我使用以下功能: threshold = [-1.2, 1.2]; y = rmoutliers(y,'percentiles',threshold); 但出现了错误: 使用isoutlier>parseinput时出错(第236行) “百分位数”值必须是一个排序的2元素数字向量,其条目介于0和100之间 任何其他可以用来解决问题的功能?删除它们是很简单的。假设需要从x轴和y轴数据中删除点 idx_to_remove = ((y<-1.2)|(y>

删除1.2以上和-1.2以下的数据

我使用以下功能:

threshold = [-1.2, 1.2];
y = rmoutliers(y,'percentiles',threshold);
但出现了错误:

使用isoutlier>parseinput时出错(第236行) “百分位数”值必须是一个排序的2元素数字向量,其条目介于0和100之间


任何其他可以用来解决问题的功能?

删除它们是很简单的。假设需要从x轴和y轴数据中删除点

idx_to_remove = ((y<-1.2)|(y>1.2));
x(idx_to_remove) = [];
y(idx_to_remove) = [];

移除它们很简单。假设需要从x轴和y轴数据中删除点

idx_to_remove = ((y<-1.2)|(y>1.2));
x(idx_to_remove) = [];
y(idx_to_remove) = [];

如果希望保持轴变量
x
不变(即元素数量应保持不变),最好将异常值转换为
NaN

y( abs(y)>1.2 ) = NaN;
y( abs(y)>1.2 ) = [];
如果要删除元素,可以使用
[]
而不是
NaN

y( abs(y)>1.2 ) = NaN;
y( abs(y)>1.2 ) = [];
此条件
abs(y)>1.2
测试绝对(正)值是否大于
1.2
,如果阈值不同,则可以单独测试

y( y > 1.2 | y < -1.2 ) = NaN;
y(y>1.2 | y<-1.2)=NaN;

如果希望保持轴变量
x
不变(即元素数量应保持不变),最好将异常值转换为
NaN

y( abs(y)>1.2 ) = NaN;
y( abs(y)>1.2 ) = [];
如果要删除元素,可以使用
[]
而不是
NaN

y( abs(y)>1.2 ) = NaN;
y( abs(y)>1.2 ) = [];
此条件
abs(y)>1.2
测试绝对(正)值是否大于
1.2
,如果阈值不同,则可以单独测试

y( y > 1.2 | y < -1.2 ) = NaN;
y(y>1.2 | y<-1.2)=NaN;
我认为
y=min(max(y,-1.2),1.2)
比使用索引快,但我没有计时。我认为
y=min(max(y,-1.2),1.2)
比使用索引快,但我没有计时。