내 안에 이전 JSL 팁 항목을 나열하는 것보다 매트릭스 항목에 액세스하는 것이 더 빠른 방법을 보았습니다. 항목에 전혀 액세스 할 필요가없는 경우 더 빠릅니다. 즉, JSL 코드에서 루핑과 항목 액세스를 수행하는 대신 JMP의 내부 코드를 가져옵니다. 각 항목에 간단한 기능을 적용하기 만하면됩니다.
루프를 회상하여 홀수의 (1 차원) 행렬을 만듭니다.
// make a matrix of odd numbers
n = 1000;
y = J(1, n); // creates a 1 x n matrix with all values set to 1
for (i = 1, i <= n, i++,
y = 2 * i - 1;
);
다음은 루프가없는 모습입니다.
// make a matrix of odd numbers
n = 1000;
y = 1::n; // creates a 1 x n matrix with all values set to 1..n
y = 2 * y - 1;
루프를 제거하는 것 외에도 다른 행렬 생성 함수를 사용했습니다. m :: n은 Index (m, n)의 줄임말로, 요소 m ~ n을 포함한 1 차원 행렬을 만듭니다. 행렬에 스칼라 연산을 적용하면 JMP는 이러한 연산을 각 셀에 개별적으로 적용합니다. 그렇게하면 JSL에서 JMP 내부로 루핑을 전송합니다. 거의 모든 숫자 함수를이 방법으로 적용 할 수 있습니다.
Sqrt( y ); // [1 1.41421356 1.7320508 2 2.23606 ...
Power( y, y ); // [1 4 27 256 ...
Log( y ); // 0 0.6931471805 1.09861228 1.38629436 ...
Floor( y / 3 ); // [0 0 1 1 1 2 2 2 3 3 ...
Sine( y / n ); // [0.0009999998 0.0019999986 0.0029999955 ...
같이 댓글 작성자 Michael 이전에 언급했듯이, Index 함수가 실제로 증가분 인 세 번째 인수를 취할 수 있기 때문에 홀수 수 예제를 훨씬 더 단순화 할 수 있습니다. 그래서 우리는 첫 번째 홀수를 다음과 같이 얻을 수 있습니다.
y = Index( 1, n * 2, 2 ); // odd numbers from 1 to 2n