如何在Matlab中过滤一定阈值内的数据?
删除1.2以上和-1.2以下的数据 我使用以下功能:如何在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>
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)
比使用索引快,但我没有计时。