Игорь - Создайте функцию для создания новой волны данных

Я пытаюсь создать функцию, которая будет брать два набора волн, сравнивать их и создавать третью волну на основе заданных параметров.

wave1 является массовыми данными и имеет значения для каждой точки данных. Wave2 также является массовыми данными, но некоторые точки данных равны нулю. Мне нужно сравнить Wave1 и Wave2, и для точек данных, где wave2 имеет ненулевое значение, третья волна должна быть разницей Wave1 минус Wave2. поэтому третья волна будет иметь количество точек данных, которые соответствуют количеству ненулевых точек данных в волне2.

1 ответ

Если я правильно понял, эта функция сделает то, что вы хотите. Это просто и не проверяет, например, одинаковой длины волны.

Function CompareWaves(w1, w2, result)
    Wave w1,w2
    String result

    Make/O/N=(numpnts(w1)) $result
    Wave resultW = $result
    resultW[] = w1[p] - w2[p]
    resultW[] = (w2[p] == 0) ? resultW[p] : NaN
    WaveTransform zapnans resultW
End

Итак, если ваши волны называются foo и bar, и вы хотите, чтобы результат назывался diff. Вызов функции с помощьюCompareWaves(foo,bar,"diff").

Другие вопросы по тегам