spfun
0이 아닌 희소 행렬 요소에 함수 적용
설명
예제
희소 행렬에 지수 함수 적용하기
4×4 희소 대각 행렬을 만듭니다.
S = diag(sparse(1:4))
S = 4x4 sparse double matrix (4 nonzeros)
(1,1) 1
(2,2) 2
(3,3) 3
(4,4) 4
S
의 0이 아닌 요소에 지수 함수를 적용합니다. 결과로 반환되는 행렬은 S
와 동일한 희소성 패턴을 가집니다.
F = spfun(@exp,S)
F = 4x4 sparse double matrix (4 nonzeros)
(1,1) 2.7183
(2,2) 7.3891
(3,3) 20.0855
(4,4) 54.5982
spfun
은 S
의 0이 아닌 요소에만 적용되므로, S(i)
가 0일 때마다 F(i)
의 값은 0이 됩니다. 이는 S
의 모든 요소에 함수를 적용하는 것과 다릅니다. 예를 들어, S
의 모든 요소에 지수 함수를 적용하는 것과 그 결과를 비교해 보겠습니다. exp(S)
함수는 S
의 0
요소에 대해 1
을 반환합니다.
full(exp(S))
ans = 4×4
2.7183 1.0000 1.0000 1.0000
1.0000 7.3891 1.0000 1.0000
1.0000 1.0000 20.0855 1.0000
1.0000 1.0000 1.0000 54.5982
2차 함수 적용 및 희소성 패턴 플로팅하기
밀도가 0.02
인 희소 형식의 50
×50
확률 행렬을 만듭니다. 여기서 행렬은 50
개의 0이 아닌 요소를 가집니다. 행렬 S
의 희소성 패턴을 플로팅합니다.
rng default;
S = sprand(50,50,0.02);
spy(S)
S
의 0이 아닌 요소에 대해 2차 함수 을 실행합니다. spfun
을 사용하여 실행된 함수는 행렬 S
와 동일한 희소성 패턴을 가집니다.
fun = @(x) x.^2 + x + 1; F = spfun(fun,S); spy(F)
입력 인수
S
— 입력 행렬
희소 행렬 | 비희소 행렬(Full Matrix)
입력 행렬입니다. 이 행렬은 항상 그렇지는 않지만 일반적으로 비희소 행렬입니다.
S
가 비희소 행렬인 경우 F = spfun(func,S)
는 S
의 0이 아닌 요소에 함수 func
를 적용하고 F
를 희소 행렬로 반환합니다.
데이터형: double
| logical
복소수 지원 여부: 예
func
— 적용할 함수
함수 핸들
입력 배열의 요소에 적용할 함수로, 함수 핸들로 지정됩니다. 함수는 S
에 대해 요소별 연산을 수행해야 합니다. 함수 핸들에 대한 자세한 내용은 함수 핸들 생성하기 항목을 참조하십시오.
예: @(n) n+1
팁
func
가 0인 입력값에 대해 0을 반환할 경우,func(S)
를 사용하면 희소 행렬S
에 대해spfun
을 호출한 것과 동일한 결과를 반환할 수 있습니다.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
GPU 배열
Parallel Computing Toolbox™를 사용해 GPU(그래픽스 처리 장치)에서 실행하여 코드 실행 속도를 높일 수 있습니다.
spfun
함수는 GPU 배열을 완전히 지원합니다. GPU에서 이 함수를 실행하려면 입력 데이터를 gpuArray
(Parallel Computing Toolbox)로 지정하십시오. 자세한 내용은 GPU에서 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
분산 배열
Parallel Computing Toolbox™를 사용하여 대규모 배열을 클러스터의 결합된 메모리에 걸쳐 분할할 수 있습니다.
사용법 관련 참고 및 제한 사항:
각 워커에서,
fun
은 워커에 로컬인S
의 0이 아닌 요소만 입력값으로 받습니다. 따라서,spfun
과 함께 사용하기에는 요소별 연산을 수행하는 함수가 가장 적합합니다.
자세한 내용은 분산 배열을 사용하여 MATLAB 함수 실행 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)