Коллеги - кто нить подскажет (ибо по причине врожденной..эмммм....своей несообразительности) - макрос для расчета автокорреляционной функции сейсмической трассы (соответсвенно получается для куба или линии)? Чет немогу сообразить рекурсив с исспольльзованием промежуточной суммы как результата предыдущего шага и для следующего шага по дискрету в цикле. Чет я затупил з этими Set reference и исспользованием сейсмического калькулятора...Хелпа маловато для меня, мож кто че посоветует. Например :
Set reference
Variable B=>TekSum
Set reference
Variable C=>PromSum
f()
Numeric Expression
$l=1
Loop
Variable $l From 1 To 500
Seismic Calculator
Seismic input > test.sgy Expression or file: TekSum=PromSum+test_sgy(K+$l)
Set reference
Variable B=>Variable C
End Loop
Может вот так получится?:
Loop
Variable $l From 1 To 500
Seismic Calculator
Seismic input > test.sgy Expression or file: TekSum_$I=PromSum+test_sgy(K+$l)
Seismic Calculator
Seismic input > test.sgy Expression or file: PromSum=TekSum_$I
End Loop
и референсы тогда вообще не нужны
сенкс, попробую, но в таком случае будет создано 500 файлов сегвай TekSum_1,2,3.....500, или я чет путаю? и кроме того если я не ошибаюсь в левой части выражения в калькуляторе нельзя исспользовать счетчик или массив?
..........................
испытал, чет посчитало, но....подвисает петя, не могу даж посмотреть че посчитал (я убрал индексы массива в левой части , они по-моему лишние?)
если не нужно 500 файлов сегвай, то надо просто
Seismic Calculator Seismic input > test.sgy Expression or file: PromSum=TekSum_$I
заменить на:
Set Name TekSum_$I=PromSum
в левой части можно использовать счетчик (не всегда, но можно) просто Педрель не понимает (или я не знаю как ) счетчики типа $I-1 или $I+1.
получилось в итоге?
не срабатывает такая замена имени, ибо калькулятор не указывет на объект с тем же именем а указывает на объект как таковой, типа по времени создания. Во втором проходе калькулятор создает новый объект с тем же именем TekSum и таких одноименных объктов может быть много, и поетому Set Name во втором проходе не находит старого объекта TekSum ибо он был переименован в первом в PromSum, несмотря на то что в предыдущем шаге второго прохода создан объект с именем TekSum, но это другой объект
Да, я уже методом научного тыка узнал что счетчик нужно вручную накручивать внутри цикла ($k=$k+1, где мои 17 лет, подзабыл бейсик, и что в цикле Loop таки нужно вручную накручивать счетчик ), к этому выводу я пришел из-за того, что переменная в Loop почему то не участвует в части выражения (К-$l) и нужно (K-$k). Опять же - "минус" - ибо я ошибся, мне нужно опускать по времени на дискрет трассу относительно самой себя.....Но это мелочи, все считает и в Вашем первом варианте, физической замене объектов (только TekSum_$I без $I нужно, ибо таки создает не текущую сумму, а новую), но при попытке посмотреть - петя вылетает....Хотя если вручную в калькуляторе работать, все получается, но устанешь формулу суммы из 500 элементов набивать , да и некрасиво .
Seismic Calculator
Seismic input > test.sgy Expression or file: TekSum=PromSum+test_sgy(K+$l)
какая операция выполняется должна быть выполнена калькуляторе ?
эммъ, сорри не понял вашего вопроса, прям как телеграмма - тчк зпт .....Я бпросил сие занятие, нашел выход - в pStax Джеографикса сей атрибут расчитывается отдельной операцией. Хотя как для общего развития все же нужно и к Пете применить.
это исходный макрос
1.Set reference Variable B=>TekSum
2.Set reference Variable C=>PromSum
3.f() Numeric Expression $l=1
4.Loop Variable $l From 1 To 500
5.Seismic Calculator Seismic input > test.sgy Expression or file: TekSum=PromSum+test_sgy(K+$l)
6.Set reference Variable B=>Variable C
7.End Loop
Какая операция должна быть выполнена на 5 шаге ( в сейсмике не силен - можно поподробнее))