MATLAB намира елемент от масив и условно добавя към константа

Даден е този масив от ъгли:

  123.5280
  129.5280
  129.0130
  136.2960
  139.1640
  145.7430
  148.9800
  156.9080
  168.3440
  179.2340
    3.0840
    3.9720

Бих искал да идентифицирам тези, които са ‹ 90 градуса

angles(angles < 90)

ans =

    3.0840
    3.9720

и добавете 180 само към тези две като резултат

  123.5280
  129.5280
  129.0130
  136.2960
  139.1640
  145.7430
  148.9800
  156.9080
  168.3440
  179.2340
  183.0840
  183.9720

Как да постигна това?


person pepe    schedule 22.02.2015    source източник
comment
@Jubobs: Няма какво повече да добавя. Направете го отговор!   -  person knedlsepp    schedule 22.02.2015
comment
благодаря @Jubobs - моля, добавете го като отговор, за да мога да го отметна   -  person pepe    schedule 22.02.2015


Отговори (2)


Поведението, което търсите, се нарича (фазово) разгръщане и има вградена функция unwrap за това

res = unwrap(angles / 90 * pi) / pi * 90

Обърнете внимание, че unwrap работи в радиани и за скокове от +/-pi, а не 2*pi, както поискате, следователно умишлено мащабирам с 90 * pi вместо 180 * pi. Вижте също дискусията тук.

person mbschenkel    schedule 22.02.2015

Решение в един ред:

angles=angles+(angles<90)*180;
person Олег Паничев    schedule 22.02.2015