我有一个包含几个不同值的向量,其中所有值都介于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];
这是因为min
和max
值确定哪个是绑定,从而定义了从原始向量开始的新向量。
答案 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函数,您不想覆盖它们。