Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

spalloc

희소 행렬에 대한 공간 할당

설명

예제

S = spalloc(m,n,nz)nz개의 0이 아닌 요소를 저장할 공간이 있는 크기 m×n의 모두 0인 희소 행렬 S를 만듭니다(단, nz >= 1).

예제

모두 축소

spalloc를 사용하여 최대 20개의 0이 아닌 요소에 대한 공간이 있는 10×10의 모두 0인 희소 행렬을 초기화합니다.

S = spalloc(10,10,20);

이 행렬의 여러 요소를 정의합니다.

S(1:3,1:3) = magic(3)
S = 
   (1,1)        8
   (2,1)        3
   (3,1)        4
   (1,2)        1
   (2,2)        5
   (3,2)        9
   (1,3)        6
   (2,3)        7
   (3,3)        2

행렬에 있는 0이 아닌 요소의 개수를 표시합니다.

n1 = nnz(S)
n1 = 9

0이 아닌 행렬 요소에 할당되는 저장 공간의 양을 표시합니다.

n2 = nzmax(S)
n2 = 20

spalloc를 사용하여 0이 아닌 요소 100개에 대한 공간이 있는 20×20의 모두 0인 희소 행렬을 초기화합니다.

n = 20;
S = spalloc(n,n,5*n);

그런 다음 for 루프를 사용하여 S의 열을 한 번에 하나씩 평균적으로 열당 최대 5개의 0이 아닌 요소로 채웁니다.

for j = 1:n
    S(:,j) = [zeros(n-5,1); round(rand(5,1))];
end

행렬 S의 희소성 패턴을 플로팅합니다. 점은 0이 아닌 요소를 나타냅니다.

spy(S)

Figure contains an axes object. The axes object contains an object of type line.

행렬에 있는 0이 아닌 요소의 개수를 표시합니다.

n1 = nnz(S)
n1 = 54

0이 아닌 행렬 요소에 할당되는 저장 공간의 양을 표시합니다.

n2 = nzmax(S)
n2 = 100

입력 인수

모두 축소

행렬 행의 개수로, 음이 아닌 정수로 지정됩니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

행렬 열의 개수로, 음이 아닌 정수로 지정됩니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

0이 아닌 요소에 대한 저장 공간 할당으로, 음이 아닌 정수로 지정됩니다. nz의 값을 0으로 지정하면 spallocnz의 값을 1로 대신 설정합니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

제한 사항

  • 두 행렬 차원 mn 모두 32비트 플랫폼의 경우 2^31-1보다 작거나 64비트 플랫폼의 경우 2^48-1보다 작아야 합니다.

  • spalloc로 만든 행렬에 여러 번 대입하는 경우, 미리 할당된 메모리 때문에 반복 재할당이 방해를 받을 수 있습니다. 어떻든 희소 행렬에 대입하는 작업은 여전히 상대적으로 비용이 많이 소모되는 연산이므로, 다음 중 하나로 쉽게 대체할 수 있다면 보통은 피하는 것이 좋습니다.

    • sparse 함수에 대한 일회성 호출

    • spdiags 함수에 대한 일회성 호출

    • 행렬 집합의 일회성 결합(희소, 조밀 둘 다 가능)

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

버전 내역

R2006a 이전에 개발됨