<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />누구든지 xy 좌표 위치가있는 신호 (나는 관심있는 60 개의 신호가 있음)가 10 번 측정 (얼마나 많은 시간이 10 번 측정에 표시되는지)에 걸쳐 반복되는 횟수를 결정하는 가장 좋은 방법을 알고 있습니까? 나는 (서로 다른 xy 위치를 가진) 식별 된> 20,000 개 이상의 신호 목록을 가지고 있지만, 그 중 60 개 ~ 60 개가 반복되는 것을보고 싶습니다 (각 신호는 동일한 xy 좌표를 가질 수 없으므로 겹치지 않습니다) . xy 위치는 동일한 신호에 대해서도 약간 다를 수 있으므로 xy 위치에서 약간의 공차가 있어야합니다. 관련있는 내용을 찾지 않고 토론 게시판을 수색했으나, 적절한 대화가 있다면 알려주십시오. 감사!
etucker0 ,
내가 가지고 있는지 알려주지. 내가 올바르게 이해한다면 측정 값과 위치가 있고 어느 정도의 반복을 통해 거리에 약간의 허용 오차가있는 측정을 할 수 있는지 알고 싶을 것입니다. 허리케인 예제와 위치 및 풍속 측정 데이터를 가져옵니다. 각 행에 대해 특정 거리 (킬로미터로 반경) 내에서 유사한 풍속 (매듭)이 몇 번 있는지 알고 싶다면 다음 스크립트를 사용할 수 있습니다.
마지막에는 테이블의 각 행에 대해 여러 "일치"측정 값을 갖게됩니다.
또는 비교할 사전 목록이있는 경우 두 테이블의 데이터를 비교할 수 있습니다.
이것이 당신이 찾고있는 것이라면 저에게 알려주십시오.
전역 삭제 () ;
기본 이름은 여기에있다. ( 1 ) ;
// 데이터 파일 (점)을 엽니 다. 여기에는 업데이트 할 관찰이 포함됩니다.
주사위 = 열다 ( "C : \ Program Files (x86) \ SAS \ JMPSW \ 11 \ Samples \ Data \ Hurricanes.jmp" ) ;
도트 = 데이터 표 ( 주사위 ) << 부분 집합 ( 표본의 크기 ( 2000 년 ) ) ; // 속도를 위해 더 작은 테이블 만들기
닫기 ( 주사위 , 저장 안 함 ) ;
// 바람 측정에 약간의 잡음 추가
도트 << 새 열 ( "바람" , 공식 ( : 이름 ( "바람 (매듭)" ) + 임의 정상 () ) ) ;
// 카운트 열 소개
도트 << 새 열 ( "반복 된" ) ;
// 테이블에서 위도와 경도 값을 추출합니다 (라디안).
엑스 = ( 기둥 ( 도트 , "경도" ) << getValues ) * 파이 () / 180 ;
와이 = ( 기둥 ( 도트 , "위도" ) << getValues ) * 파이 () / 180 ;
// KM에서 계산 함수를 선언하십시오.
haversine = 기능 ( { long1 , 위도 1 , long2 , 위도 2 , 아르 자형 = 6371 } ,
{ 기본 로컬 } ,
에이 = 죄 ( ( 위도 1 - 위도 2 ) / 2 ) ^ 2 + 코사인 ( 위도 1 ) * 코사인 ( 위도 2 ) * 죄 ( ( long1 - long2 ) / 2 ) ^ 2 ;
기음 = 2 * ATAN ( 에이 ^ 0.5 , ( 1 - 에이 ) ^ 0.5 ) ;
디 = 아르 자형 * 기음 ;
) ;
// 거리와 풍속의 허용 오차를 정의한다.
거리 = 100 ; // in Km
차 = 10 ; // 매듭에
기다림 ( 0.01 ) ;
// 테이블의 행을 따라 함수를 실행합니다.
에 대한 ( 나는 = 1 , 나는 <= N 행 ( 도트 ) - 1 , 나는 ++,
지 = 0 ;
에 대한 ( 그것 = 1 , 그것 <= N 행 ( 도트 ) - 1 , 그것 ++,
만약 (
haversine ( 엑스 [ 나는 ] , 와이 [ 나는 ] , 엑스 [ 그것 ] , 와이 [ 그것 ] ) < 거리 // 거리 조건
& 애비 ( : 바람 [ 나는 ] - : 바람 [ 그것 ] ) < 차
, // 바람 측정의 차이 조건
지 ++; // 일치 개수 계산
)
) ;
지 -; // 자신과 일치하는 것을 제거하십시오.
: 반복 된 [ 나는 ] = 지 ; // 테이블을 갱신한다.
) ;
// 결과를 매핑합니다.
그래프 빌더 (
제어판 표시 ( 0 ) ,
변수 ( 엑스 ( : 경도 ) , 와이 ( : 위도 ) , 크기 ( : 반복 된 ) ) ,
집단 ( 전철기 ( 엑스 , 와이 , 전설 ( 1 ) , 지터 ( 1 ) ) ) ,
SendToReport (
급파 ( {} , "그래프 빌더" , FrameBox , { 배경지도 ( 이미지 ( "단순한 지구" ) ) , 눈금 선 순서 ( 2 ) , 참조 행 순서 ( 삼 }} )
)
)
안녕하세요, 론,
미안해, 내가 더 분명해야 했어. 이 모의 데이터는 첫 번째 측정에서 나온 두 개의 신호에 대한 것입니다. 따라서 9 개의 다른 반복 측정이 있습니다.이 두 신호에 대해 약간 이동 된 x 및 y 값 (그리고 확실히 다른 ID 번호)이 있습니다. 또한, Amplitude SD1과 SD2 역시 약간 다를 수 있습니다. 희망이 도움이됩니다.
반복은 다음과 같이 보일 수 있습니다.
신분증 | 엑스 | 와이 | 진폭 SD1 | 진폭 SD2 | | | | | | |
|---|
21775 | -22285.12 | -6664.55 | 2950 | 0 |
21799 | -17723.33 | 7946.01 | 0 | 5050 |
- 에릭
etucker0
명확하지 않습니다. 당신은 반복과 반복의 예를들 수 있습니까? 그것은 행이나 열에 걸쳐 있습니까?
론
안녕하세요, 론,
다음은 몇 가지 예제 데이터입니다. 두 행은 각각 두 개의 "신호"입니다. 한 가지 명심해야 할 점은 각 반복 측정 결과마다 ID가 실제로 변경된다는 것입니다. 즉, 모든 반복 측정에서 동일한 신호를 선택하기 위해 ID를 사용할 수 없기 때문에 모든 측정에 대해 모든 신호의 번호를 다시 지정합니다. SD1과 SD2는 각 신호에 대한 데이터를 제공하는 서로 다른 측정 채널입니다. 동일한 신호에 대한 위치 x와 y는 원래 게시물에서 언급 한 것처럼 약간 다를 수 있습니다.
신분증 | 엑스 | 와이 | 진폭 SD1 | 진폭 SD2 | | | | | | |
|---|
21770 | -22281.78 | -6669.19 | 3000 | 0 |
21792 | -17728.65 | 7949.11 | 0 | 5000 |
X, Y 쌍은 소수점 이하 2 자리로 반올림되어 신호의 "이름"을 결정합니까? 그렇다면, 둥근 값을 연관 배열에 대한 키로 사용하는 것은 유사한 쌍의 출현을 계산하는 접근법 일 수 있습니다.
counts = 연관 배열 ();
카운트 << SetDefaultValue (0);
counts [char (round (pi (), 2)) || ","|| char (round (e (), 2))] + = 1;
쇼 (카운트);
counts = [ "3.14,2.72"=> 1, => 0];
안녕하세요 etucker0 ,
데이터의 약간의 샘플을 제공한다면 (가짜 일 수 있습니다) 나는 당신을 도울 수 있다고 생각합니다. 나는 비슷한 데이터로 직접 작업하고있다. 그러나 솔루션은 테이블 작성 방법에 따라 다릅니다.