向量中元素的动态减少

时间:2016-06-14 14:42:59

标签: algorithm matlab vector dynamic reduction

我有一个包含几个不同值的向量,其中所有值都介于0和1之间。

我还有两个不同的值,分别为min和max,表示最小值和最大值;这两个值可能会及时改变。

我会动态减少矢量的维数,这些值必须包含在由min和max描述的间隙中。

例如, 在时间t = 1我有那个向量:

 a=[0.5,0.2,0.6,0.3,0.2187,0.8798,0.5432,0.3563,0.3981,0.7845];
 min=0.3;
 max=0.7;

给定向量a和两个值(最小值和最大值),新向量:a_new,

应该是:

 a_new=[0.5,0.6,0.3,0.5432,0.3563,0.3981];

这是因为minmax值确定哪个是绑定,从而定义了从原始向量开始的新向量。

1 个答案:

答案 0 :(得分:3)

代码解决方案

如果您只想生成给定旧矢量的新矢量,请使用以下语法:

a_new = a(a>=min & a<=max);

如果您还想计算每个已删除和未删除值的位置,请使用MATLAB的查找功能:

nonDeleteIndices = find(a>=min & a<=max);
deletedIndices= find(a<min | a>max);

<强>结果

a_new =

0.5000    0.6000    0.3000    0.5432    0.3563    0.3981


nonDeletedIndices=

 1     3     4     7     8     9


 deletedIndices=

 2     5     6     10

<强>建议

我建议使用除min和max之外的其他变量名称 - 例如minVal和maxVal。已经存在具有这些名称的MATLAB函数,您不想覆盖它们。