모든 최소 피크가 x축을 따라 놓이도록 이동하도록 사인파 데이터를 위상 이동하려고 합니다. 이 코드로 시도했지만 " 'Matrix' , Matrix/*###*/(sineCol < < Get Values)"의 액세스 또는 평가에서 목록 또는 숫자여야 합니다."
도움을 주시면 감사하겠습니다.
// 데이터 로드
dt = 현재 데이터 테이블();
// 사인파 데이터로 열 지정
sineCol = dt << 열("PITCH");
// sineCol을 행렬로 변환
sineMat = Matrix(sineCol << Get Values);
// 최소 피크의 인덱스를 계산합니다.
minIndex = Loc Min(sineMat);
// 데이터를 이동할 포인트 수를 계산합니다.
shiftPoints = N Rows(sineMat) - minIndex;
// 데이터 이동
shiftedSineCol = J(N Rows(sineMat), 1, .);
For(i = 1, i <= N 행(sineMat), i++,
shiftedSineCol[i] = If(i <= shiftPoints, sineMat[shiftPoints-i+1], sineMat[N Rows(sineMat)-i+shiftPoints+1]);
);
// 이동된 데이터의 테이블 생성
newTable = 새 테이블("피치 이동", 행 추가(N 행(dt)));
newTable["PITCH Shifted"] = shiftedSineCol;
newTable["TIME"] = dt:column("TIME");
// 테이블 저장
newTable << Save("PITCH Shifted.jmp");