모두 안녕
나는 더 강력한 통계 소프트웨어를 사용하는 데 매우 익숙하며 천천히 요령을 배우고 있습니다. 나는 피드백을 구현하는 데 능숙하지만 내 자신의 연구에는 그다지 능숙하지 않습니다.
배터리로 작업합니다. 우리는 엄청난 양의 데이터를 수집하고 우리가 찾고자 하는 것에 따라 다른 테스트를 사용합니다. 생성된 데이터는 셀을 충전하고, 휴식을 취하고, 방전하고, 다시 휴식을 취하면서 본질적으로 주기적입니다. 이를 단계라고 합니다.
하나의 테스트(나는 그것을 실행이라고 부릅니다)에서 우리는 한 체제에서 여러 주기를 가질 수 있고, 또 다른 체제에서 여러 주기를 가질 수 있습니다. 따라서 응답(전류, 전압, 용량, 에너지 등)을 주기, 단계 및 실행의 요소로 추적할 수 있는 것이 중요합니다.
내 쿼리: 11에서 시작하여 4행마다 1씩 증가하는 열 수식이 필요합니다. 이 열은 여러 실행에서 총 주기 수를 추적합니다. 4씩 증가해야 하는 이유는 각 주기에 있는 단계 수 때문입니다.
더 명확히 하기 위해 예를 들어 보겠습니다.
열 1에는 실행이라는 레이블이 지정되어 있습니다. 일련의 특정 테스트 수를 추적합니다.
열 2에는 총 주기 수라는 레이블이 지정되어 있습니다. 이것은 내가 제대로 코딩해야 하는 열입니다.
열 3에는 실제 주기 번호라는 레이블이 지정되어 있습니다. 특정 테스트의 주기 번호를 설명합니다. 이 값은 주기적이며 각각의 새 실행 시작 시 1로 돌아갑니다. 그들의 상한은 일관성이 없습니다. 값은 또한 각 주기에 있는 단계 수에 따라 반복됩니다. 값의 예는 1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,1,1,1,1,2,2입니다. ,2,2 등
열 5는 RawStepID로 레이블이 지정됩니다. 각 주기가 시작될 때 다시 1로 재설정됩니다. 예를 들면 1,2,3,4,1,2,3,4,1,2,3,4 등이 있습니다.
열 6+는 얻은 모든 데이터입니다.
지금까지 열 2에 대한 나의 접근 방식은 로컬 변수가 있는 IF 문을 준비하는 것이었습니다. RawStepID == 1일 때마다 이 변수를 1씩 증가시키길 원합니다. 11에서 시작한 다음 RawStepID=1일 때 12가 되고, 다음에 RawStepID=1일 때 13이 되는 식으로 해야 합니다. 그런 다음 변수의 현재 값을 표시하는 수식이 필요합니다.
즉, 열 3에 입력한 데이터를 사용하는 경우 이 열의 값이
11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17, 17,17,17,18,18,18,18 등
이것이 명확하기를 바랍니다. 그 동안 나는 다른 회원들이 하는 것을 본 것처럼 포럼 게시물에 테이블을 포함하는 방법을 시도하고 여기에 첨부할 더미 테이블을 만드는 데 실패합니다.
감사해요,
ScaredAntelope.
지연은 이전 행의 값만 보고 도움말이나 스크립팅 인덱스에서 지연을 검색하면 조금 더 많은 정보가 있습니다.두 번째 조건은 ActualCycleNumber가 몇 개의 순차적 행에 대해 1이고 1인 첫 번째 행에서만 재설정되어야 하는 경우입니다. 애플리케이션에 필요하지 않을 수 있습니다.
안녕하세요 @ih ,
감사합니다! 귀하가 제공한 두 번째 접근 방식은 제가 구현하려고 했던 것과 정확히 일치합니다. 내 코드가 어떻게 생겼는지 공유하지는 않겠지만 가장 많이 끓인 종류의 스파게티라고 확신할 수 있습니다.
내가 올바르게 이해한다면 매우 유연한 솔루션이기도 합니다. 2행에서 11을 변경하여 행의 시작 번호를 변경할 수 있고, 3행 끝에서 총 주기 수의 지연을 변경하여 증분을 변경할 수 있으며, 이 코드를 증분에 적용하는 방법을 볼 수 있습니다. 실제 주기 번호가 다시 1이 될 때마다 값을 실행합니다.
If(
Row() == 1, 23,
:ActualCycleNumber == 1 & Lag ( :ActualCycleNumber ) != 1, Lag ( :Run ) + 1,
Lag ( :Run )
)
총 주기 수 증가에 대한 두 번째 조건의 효과를 이해할 수 없습니다. 또는 일반적으로 Lag를 사용하는 방법. 그러한 원리를 배우기에 좋은 자료를 알려주시거나 설명해 주시겠습니까?
안녕 @statman
이 특정 시나리오의 경우입니다. 예. 그러나 Total Cycle Number는 여러 실행에서 데이터를 추적하기 위해 쿼리에서 광범위하게 사용하는 것입니다. 예를 들어 Run 1에 특정한 이 테이블과 Run 2에 특정한 데이터에 대한 또 다른 테이블을 가질 수 있습니다. 둘 다에서 실제 주기 수는 1에서 시작하여 무엇이든 증가합니다(테스트 내에서 정의됨). 그러나 총 주기 수는 모든 실행에서 해당 배터리가 경험한 실제 주기 수의 누적 합계에서 시작됩니다.
이를 보는 또 다른 방법은 실제 주기 수는 실험 소프트웨어에서 얻은 원시 데이터이고 총 주기 수는 처리된 데이터라는 것입니다. 그리고 마지막 예시:
실행 1에는 30주기가 포함됩니다. 이 경우 총 주기 및 실제 주기 수는 모두 1에서 시작하여 30에서 끝납니다. 실행 2에는 15개의 주기가 포함되어 있습니다. 총 주기 수는 31에서 시작하여 45에서 끝납니다. 실제 주기 번호는 1에서 시작하여 15에서 끝납니다. 실행 3에는 102개의 주기가 포함됩니다. 합계는 46에서 시작하여 147에서 끝납니다. 실제 시작은 1에서 102에서 끝나는 식입니다. 종종 이러한 종류의 증분은 동일한 데이터 테이블 내에서 발생합니다. 모든 실행에서 총 주기 수를 추적하는 것은 배터리 상태의 핵심 요소 중 하나이므로 분석에 매우 유용합니다.
나는 그것이 데이터에 대한 나의 필요성을 그대로 해결하기를 바랍니다!
어떤 질문에 대답하려고 합니까? 간단히 살펴보면 열 2(11,11,11,11,12...)가 열 1(1,1,1,1,2...)과 혼동되어 유용하지 않습니다. 각 열은 고유한 X 또는 Y여야 합니다.
안녕 @ScaredAntelope ,
열 2 '총 주기 수'에 접근할 수 있는 두 가지 방법은 행별로 명시적으로 정의하는 것입니다.
11 + Floor( (Row() - 1) / 4 )

또는 지금하고 있다고 생각하는 방식으로 계산하십시오.
If(
Row() == 1, 11,
:RawStepID == 1 & Lag( :RawStepID ) != 1, Lag( :Total Cycle Number ) + 1,
Lag( :Total Cycle Number )
)

중간 조건에서 총 주기 수를 증가시키는 데 필요한 두 가지 조건에 유의하십시오. 다른 열도 확인하도록 확장할 수 있습니다. 예를 들어 실제 주기 번호도 1이어야 합니다.