Игорь - Создайте функцию для создания новой волны данных
Я пытаюсь создать функцию, которая будет брать два набора волн, сравнивать их и создавать третью волну на основе заданных параметров.
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")
.