bsxfun
묵시적 확장(Implicit Expansion)이 가능한 두 배열에 요소별 연산 적용
설명
예제
열 평균값을 행렬 A의 대응하는 열 요소에서 뺍니다. 그런 다음 표준편차로 정규화합니다.
A = [1 2 10; 3 4 20; 9 6 15]; C = bsxfun(@minus, A, mean(A)); D = bsxfun(@rdivide, C, std(A))
D = 3×3
-0.8006 -1.0000 -1.0000
-0.3203 0 1.0000
1.1209 1.0000 0
MATLAB® R2016b 이상에서는 연산자가 서로 호환되는 크기를 갖는 배열의 묵시적 확장을 독립적으로 지원하므로 bsxfun 대신 연산자를 직접 사용할 수 있습니다.
(A - mean(A))./std(A)
ans = 3×3
-0.8006 -1.0000 -1.0000
-0.3203 0 1.0000
1.1209 1.0000 0
열 벡터의 요소와 행 벡터의 요소를 비교합니다. 그 결과로 두 벡터 요소들의 각 조합에 대한 비교 값이 포함된 행렬이 반환됩니다. A > B를 사용하면 이 연산을 실행한 것과 동일한 결과를 얻을 수 있습니다.
A = [8; 17; 20; 24]
A = 4×1
8
17
20
24
B = [0 10 21]
B = 1×3
0 10 21
C = bsxfun(@gt,A,B)
C = 4×3 logical array
1 0 0
1 1 0
1 1 0
1 1 1
함수 를 나타내는 함수 핸들을 만듭니다.
fun = @(a,b) a - exp(b);
bsxfun을 사용하여 이 함수를 벡터 a와 벡터 b에 적용합니다. bsxfun 함수는 벡터를 동일한 크기의 행렬로 확장하며, 이는 입력값의 여러 조합에 대해 fun을 실행할 수 있는 효율적인 방법입니다.
a = 1:7; b = pi*[0 1/4 1/3 1/2 2/3 3/4 1].'; C = bsxfun(fun,a,b)
C = 7×7
0 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000
-1.1933 -0.1933 0.8067 1.8067 2.8067 3.8067 4.8067
-1.8497 -0.8497 0.1503 1.1503 2.1503 3.1503 4.1503
-3.8105 -2.8105 -1.8105 -0.8105 0.1895 1.1895 2.1895
-7.1205 -6.1205 -5.1205 -4.1205 -3.1205 -2.1205 -1.1205
-9.5507 -8.5507 -7.5507 -6.5507 -5.5507 -4.5507 -3.5507
-22.1407 -21.1407 -20.1407 -19.1407 -18.1407 -17.1407 -16.1407
입력 인수
적용할 이항 함수로, 함수 핸들로 지정됩니다. fun은 호환되는 크기의 배열 A와 배열 B를 받는 C = fun(A,B) 형식의 이항(2-입력값) 요소별 함수여야 합니다. 자세한 내용은 기본 연산에 대해 호환되는 배열 크기 항목을 참조하십시오. fun은 스칼라 확장을 지원해야 합니다. 그래야만 A 또는 B가 스칼라인 경우 다른 입력 배열의 요소 각각에 해당 스칼라를 적용시키고 C를 결과로 반환할 수 있습니다.
MATLAB® R2016b 이상에서, 다음 표에 나열된 내장 이항 함수는 묵시적 확장을 독립적으로 지원합니다. 이러한 함수를 사용하면 bsxfun을 사용하지 않고도 함수나 연산자를 직접 호출할 수 있습니다. 예를 들어, C = bsxfun(@plus,A,B) 대신 A+B를 사용할 수 있습니다.
| 함수 | 기호 | 설명 |
|---|---|---|
plus |
| 플러스 |
minus |
| 마이너스 |
times |
| 배열 곱하기 |
rdivide |
| 우측 배열 나누기 |
ldivide |
| 좌측 배열 나누기 |
power |
| 배열 거듭제곱 |
eq |
| 같음 |
ne |
| 같지 않음 |
gt |
| 보다 큼 |
ge |
| 보다 크거나 같음 |
lt |
| 보다 작음 |
le |
| 보다 작거나 같음 |
and |
| 요소별 논리 AND |
or |
| 요소별 논리 OR |
xor | N/A | 논리 배타적 OR |
bitand | N/A | 비트별 AND(Bit-wise AND) |
bitor | N/A | 비트별 OR(Bit-wise OR) |
bitxor | N/A | 비트별 XOR |
max | N/A | 이진 최댓값 |
min | N/A | 이진 최솟값 |
mod | N/A | 나눗셈의 나머지(Modulus) |
rem | N/A | 나눗셈의 나머지 |
atan2 | N/A | 4사분면 역탄젠트(결과값 단위: 라디안) |
atan2d | N/A | 4사분면 역탄젠트(결과값 단위: 도) |
hypot | N/A | 제곱합의 제곱근 |
예: C = bsxfun(@plus,[1 2],[2; 3])
데이터형: function_handle
입력 배열로, 스칼라, 벡터, 행렬, 다차원 배열 중 하나로 지정됩니다. 입력 인수 A와 B는 서로 호환되는 크기를 가져야 합니다. 자세한 내용은 기본 연산에 대해 호환되는 배열 크기 항목을 참조하십시오. 실제 계산에서 bsxfun은 A 또는 B의 차원이 한원소(1인 경우)이면 다른 배열의 차원에 맞추어 배열을 복제합니다. 실제 계산에서 bsxfun은 A 또는 B의 차원이 한원소이고 다른 배열의 대응하는 차원이 0이면 한원소 차원을 0으로 축소합니다.
데이터형: single | double | uint8 | uint16 | uint32 | uint64 | int8 | int16 | int32 | int64 | char | logical
복소수 지원 여부: 예
팁
많은 경우에
bsxfun을 묵시적 확장을 지원하는 함수와 연산자에 대한 직접 호출로 바꾸는 것이 좋습니다. 묵시적 확장은bsxfun을 사용할 때에 비해 실행 속도가 빠르고 메모리 사용률이 효율적이며 코드의 가독성을 개선합니다. 자세한 내용은 기본 연산에 대해 호환되는 배열 크기 항목을 참조하십시오.
확장 기능
bsxfun 함수는 tall형 배열을 지원하지만 다음과 같은 사용법 관련 참고 및 제한 사항이 있습니다.
지정된 함수는 persistent 변수에 종속되어선 안 됩니다.
자세한 내용은 tall형 배열 항목을 참조하십시오.
사용법 관련 참고 및 제한 사항:
코드 생성 시 이 함수에 대해 희소 행렬 입력값은 지원되지 않습니다.
사용법 관련 참고 및 제한 사항:
코드 생성 시 이 함수에 대해 희소 행렬 입력값은 지원되지 않습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
bsxfun 함수는 GPU 배열 입력값을 지원하지만 다음과 같은 사용법 관련 참고 및 제한 사항이 있습니다.
bsxfun(Parallel Computing Toolbox)을 참조하십시오.
이 함수는 분산 배열을 완전히 지원합니다. 자세한 내용은 분산 배열을 사용하여 MATLAB 함수 실행 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
R2007a에 개발됨
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- 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)