MATLAB: Как использовать index-number в векторном фильтре

#matlab #syntax #vector

#matlab #синтаксис #вектор

Вопрос:

У меня есть векторный фильтр, и мне нужно использовать индекс-номер векторного элемента в фильтре. Каким будет синтаксис для INDEXNUMBER приведенного ниже примера?

 myVector(myVector < 0.05*(INDEXNUMBER/(120-INDEXNUMBER)));
  

Спасибо,

Ответ №1:

Предполагая, что я понимаю, что вы пытаетесь сделать, вы бы просто заменили myVector на INDEXNUMBER :

 myVector  = rand(1,10);
selection = myVector(myVector < 0.05*(myVector/(120-myVector)));
  

Логическое индексирование (часть внутри самой внешней круглой скобки, вторая строка) просто выполняет логическое сравнение всех элементов MyVector, возвращая вектор равной длины 0 ‘s и 1 ‘s и выбирая элементы myVector , которые соответствуют 1 ‘s. Если это не то, что вы делаете, просто убедитесь, что ваши размеры работают правильно (размер неравенства левой руки == размер неравенства правой руки == размер выбираемой переменной), и все должно быть хорошо.


Чтобы использовать позицию каждого числа, вы могли бы использовать следующее:

 myVector  = rand(1,10);
indices   = 1:length(myVector);
selection = myVector(myVector < 0.05*(indices/(120-indices)));
  

Комментарии:

1. Спасибо за ваш ответ. Если я заменю MyVector на INDEXNUMBER, будут ли использоваться значения MyVector или позиция элемента (номер индекса)?

2. Ответ изменен в соответствии с вашим комментарием.