DIAdem 스크립트로 데이터 채널에서 특정 값 검색하는 법

업데이트 됨 Oct 16, 2024

DIAdem의 스크립트를 사용하여 데이터 채널에서 특정 값 또는 범위가 어디에 있는지 확인하고 싶습니다. 

DIAdem 스크립트에서 FIND 함수를 사용하는 것은 DIAdem 데이터 채널에서 특정 값을 찾는 가장 빠른 방법입니다.

기본 FIND 함수의 구문은 다음과 같습니다.

L3 = FIND("Ch(2) > 1")

위의 예에서 내부 변수 L3 은 'Ch(2) > 1' 조건을 충족하는 첫 번째 데이터 요소의 인덱스(1- 인덱스)를 포함합니다. 이 조건을 만족하는 것이 없으면 FIND 함수는 0을 리턴합니다.

FIND 기능에는 복잡한 검색을위한 추가 매개 변수가 있습니다.

예 :
L3 = FIND("abs(Ch(2)-10) < 0.05", 100)

위의 예에서 내부 변수 L3 은 채널 2에서 10보다 큰 첫 번째 점의 인덱스 (1- 인덱스)을 포함합니다. 또한 이 값에 대한 검색은 허용 오차 0.05로 수행됩니다. 허용 오차를 사용하면 실제 값을 찾으려고 할 때 특히 유용합니다. 또한 채널 2의 데이터 포인트 100에서부터 검색하기 시작할 것입니다.

검색이 시작되는 위치를 설정할 수 있어서, 채널에서 동일한 값을 여러 개 검색 할 수 있습니다.

예 :
DIM LV1(100)   'Array for holding the indices of the found values (size 100) 
B1 = TRUE      'Initialize loop condition
L1 = 1         'Initialize 
L2 = 1         'Search Start Position
Do While B1 
LV1(L1) = FIND("(Ch(1) > -0.05) and (Ch(1) < 0.05)" , L2)
L2 = LV1(L1)+1 'Re-Initialize pointer 
If LV1(L1)= 0 then 
B1 = FALSE 
else
L1 = L1 +1     'count number of matches
End If 
Loop

위의 예제는 "(Ch(1) > -0.05) and (Ch(1) < 0.05)" 기준을 만족하는 여러 값을 검색합니다. 검색 위치를 다루는 방법을 참고 하십시오. L2 는 각 검색이 시작되어야 하는 위치를 포함합니다. 내부 벡터 변수 LV1(1..15) 에는 Ch(1) 에서 조건이 참인 다른 점 번호가 포함됩니다.

FIND 함수의 반환 값은 위치한 값의 인덱스를 가리키는 정수입니다. 예를 들어 다음 코드를 사용합니다.

L3 = FIND("Ch(2) > 1")

실행 L3 = 5 이후, 이것은 채널 2의 다섯 번째 값이 "Ch(2) > 1" 기준을 만족한다는 것을 의미합니다.

FIND 함수는 종종 데이터의 특정 이벤트가 발생하는 시간을 찾는 데 사용됩니다.

데이터 채널 중 하나는 테스트 이벤트의 시작을 나타내는 디지털 신호이고, 다른 채널이 시간 예를 들어, 우리는 디지털 이벤트가 하이가되는 시간을 찾을 수 있습니다. 아래 데이터 사용 :

포인트 #, 시간, 디지털 신호
1, 0.000, 0
2, 0.001, 0
3, 0.002, 5
4, 0.003, 5
5, 0.004, 0

먼저 높은 "디지털 신호"의 첫 번째 값을 찾고자 합니다.

L2 = FIND("Ch("Digital Signal") > 4")

L2 는 채널의 세 번째 데이터 포인트를 나타내는 값 3을 포함합니다.

이제 우리는이 신호가 오르는 시간을 찾고 싶습니다. 이를 위해 DIAdem Script 함수 Call CHNVAL(x, y)를 사용할 수 있습니다.

R1 = CHNVAL(L2, "Time")

이 경우 R1 은 0.002와 같습니다.

이 기본 예제는 데이터 채널에서 특정 이벤트를 쿼리하는 방법을 보여줍니다. 더 많은 예제 및 세부사항을 위해 DIAdem 도움말에서 FIND 및 CHNVAL 아래를 참조 하십시오.