2016-06-14 8 views
0

У меня есть вектор, который содержит несколько различных значений, где все они находятся в пределах от 0 до 1.Динамического восстановления элементов в векторе

Я также два различных значения, называемой мин и макс, которые представляют собой минимальные и максимальные значения; эти два значения могут меняться со временем.

Я бы динамически уменьшал размер вектора, значения которого должны быть включены в промежуток, обозначенный как 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_new,

должен быть:

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

это из-за того, что min и значения max решить, который является связанным таким образом, что новый вектор, начиная с оригинала определены.

ответ

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 

Предложение

я предлагаю использовать различные другие, чем мин и макс имен переменных - например, MINVAL и MAXVAL. Есть уже функции MATLAB с этими именами, и вы не хотите их переопределять.

+0

Спасибо за ответ, я бы знал, если можно узнать положение в векторе об удаленных элементах. возможно? – Chask

+0

@ Да, возможно, я изменил свой ответ соответственно. – drorco

+0

Спасибо, только последний вопрос, индексы в выходе, которые мне нужны, являются индексами удаленных элементов, например, по моему первому вопросу: indices = [2 5 6 10] – Chask

 Смежные вопросы

  • Нет связанных вопросов^_^