<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />측정(PAR 전위차계를 사용한 순환 전압전류법)의 결과로 X와 Y라는 두 개의 열로 구성된 데이터세트가 있습니다. 불행하게도 X의 간격은 동일하지 않으며(0.0005에서 0.0015 사이로 다양함) 장비의 소프트웨어는 이를 수정할 수 없습니다. X에서 0.001과 같은 동일한 간격을 얻기 위해 데이터를 리샘플링하거나 보간하고 싶습니다. 빨리 할 수 있는 방법이 있나요?
귀하의 질문에 대한 대답은 x 값이 얼마나 불규칙한지, 그리고 정확하게 '보간'이 무엇을 의미하는지에 따라 달라집니다.
따라서 아래 스크립트는 확실히 권장 사항이 아니며 가능한 종류의 예일 뿐입니다. 스크립트가 필요하지 않은 경우 유사한 단계를 수동으로 수행할 수 있어야 합니다.
하지만 아마도 중요한 질문은 최종 값을 무엇에 사용할 것인가 하는 것입니다.
이름DefaultTo여기 ( 1 ) ;
// (0) 특정 함수를 사용하여 일정한 간격의 데이터를 만듭니다.
시간 = 기능 ( { 엑스 } , { 기본 로컬 } , 0.5 + 0.4 * 죄 ( 2 * 파이 () * 엑스 ) ) ;
N = 100 ; // [0,1]에 있는 (등간격) x 값의 개수
xVals = 색인 ( 0 , 1 , 1 / ( N - 1 ) ) `; // x 값을 열 벡터로 사용
yVal = 시간 ( xVals ) + 제이 ( N , 1 , 랜덤 노멀 ( 0 , 0.1 ) ) ; // y 값을 열 벡터로 사용
// (1) 고르지 않은 x 값을 시뮬레이션하기 위해 데이터의 3/4을 무작위로 제거합니다(그러나 여전히 원래 그리드에 있음).
델 = 랜덤인덱스 ( N , 둥근 ( 삼 * N / 4 , 0 )) ;
xVals [ 델 ] = [] ;
yVal [ 델 ] = [] ;
dt = 새 테이블 ( "불균일 x" ,
새열 ( "엑스" , 숫자 , 마디 없는 , 가치 ( xVals )) ,
새열 ( "와이" , 숫자 , 마디 없는 , 가치 ( yVal ))
) ;
// (2) 커널 스무더를 맞추고 예측 공식을 저장합니다.
비브 = dt << 이변량 ( 와이 ( : 와이 ) , 엑스 ( : 엑스 ) ) ;
비브 << 커널 스무더 ( 1 , 1 , 0.48261 , 0 , { 예측 수식 저장 }) ;
// (3) 예측 공식 얻기
폼 = 열 ( dt , "y에 대한 황토 예측기" ) << getProperty ( "공식" ) ;
// (4) 동일한 간격의 x 값을 보관할 새 테이블을 만듭니다.
명령 = 만료 (
dt2 = 새 테이블 ( "짝수 x" ,
새열 ( "엑스" , 숫자 , 마디 없는 ) ,
새열 ( "Y를 예측했습니다" , 숫자 , 마디 없는 , 공식 ( 미정 ))
)
) ;
대체하다 ( 명령 , 만료 ( 미정 ) , 평가식 ( 폼 )) ;
명령 ;
// (5) 시뮬레이션된 측정 데이터를 두 개의 벡터로 가져옵니다.
xVals = 열 ( dt , "엑스" ) << GetAsMatrix ;
yVal = 열 ( dt , "와이" ) << GetAsMatrix ;
// (6) 데이터에서 가장 작은 x 증분을 찾습니다.
xDel = 최소 ( xVals [ 2 :: Nrow ( xVals )] - xVals [ 1 :: ( Nrow ( xVals ) - 1 )]) ;
// (7) 3*xDel과 같은 동일한 간격을 사용하여 보간된 데이터로 테이블을 채웁니다.
xVals2 = 색인 ( 0 , 1 , 삼 * xDel ) `;
열 ( dt2 , "엑스" ) << 값 설정 ( xVals2 ) ;
// (8) 결과를 살펴보세요
dt2 << 그래프 빌더 (
크기 ( 534 , 454 ) ,
제어판 표시 ( 0 ) ,
변수 ( 엑스 ( : 엑스 ) , 와이 ( : 예측된 y ) ) ,
강요 ( 포인트들 ( 엑스 , 와이 , 전설 ( 5 ) ) )
) ;