power, .^
요소별 거듭제곱
설명
예제
행렬 A를 만들고 각 요소의 역수를 구합니다.
A = [1 2 3; 4 5 6; 7 8 9]; C = A.^-1
C = 3×3
1.0000 0.5000 0.3333
0.2500 0.2000 0.1667
0.1429 0.1250 0.1111
요소의 역수는 행렬의 역행렬과 같지 않습니다. 행렬의 역행렬은 A^-1이나 inv(A)로 표기합니다.
1×2 행 벡터와 3×1 열 벡터를 만들고 행 벡터를 열 벡터로 거듭제곱합니다.
a = [2 3]; b = (1:3)'; a.^b
ans = 3×2
2 3
4 9
8 27
결과는 3×2 행렬이며, 여기서 행렬에 있는 각각의 (i,j) 요소는 a(j) .^ b(i)와 같습니다.
-1의 1/3제곱에 대한 근을 계산합니다.
A = -1; B = 1/3; C = A.^B
C = 0.5000 + 0.8660i
음수의 밑 A와 정수가 아닌 B의 경우 power 함수는 복소수 결과를 반환합니다.
nthroot 함수를 사용하여 실근을 구합니다.
C = nthroot(A,3)
C = -1
R2023a 이후
두 개의 테이블을 만든 다음 두 번째 테이블을 지수로 하여 첫 번째 테이블을 거듭제곱합니다. 행 이름(두 테이블에 모두 있는 경우)과 변수 이름은 동일해야 하지만, 순서는 같지 않아도 됩니다. 출력값의 행과 변수는 첫 번째 입력값과 순서가 동일합니다.
A = table([1;2],[3;4],VariableNames=["V1","V2"],RowNames=["R1","R2"])
A=2×2 table
V1 V2
__ __
R1 1 3
R2 2 4
B = table([4;2],[3;1],VariableNames=["V2","V1"],RowNames=["R2","R1"])
B=2×2 table
V2 V1
__ __
R2 4 3
R1 2 1
C = A .^ B
C=2×2 table
V1 V2
__ ___
R1 1 9
R2 8 256
입력 인수
피연산자로, 스칼라, 벡터, 행렬, 다차원 배열, 테이블 또는 타임테이블로 지정됩니다. A와 B는 동일한 크기이거나 호환되는 크기를 가져야 합니다. 후자의 예로는 A가 M×N 행렬이고 B가 스칼라이거나 1×N 행 벡터인 경우를 들 수 있습니다. 자세한 내용은 기본 연산에 대해 호환되는 배열 크기 항목을 참조하십시오.
정수 데이터형을 가진 피연산자는 복소수일 수 없습니다.
테이블이거나 타임테이블인 입력값은 다음 조건을 충족해야 합니다. (R2023a 이후)
입력값이 테이블 또는 타임테이블인 경우 해당 테이블의 모든 변수는 연산을 지원하는 데이터형을 가져야 합니다.
입력값 중 하나만 테이블 또는 타임테이블인 경우 다른 입력값은 숫자형 배열이거나 논리형 배열이어야 합니다.
두 입력값이 모두 테이블 또는 타임테이블인 경우에는 다음을 충족해야 합니다.
두 입력값의 크기가 동일하거나, 두 입력값 중 하나가 행이 한 개 있는 테이블이어야 합니다.
두 입력값이 모두 동일한 이름의 변수를 가져야 합니다. 그러나 각 입력값의 변수 순서는 다를 수 있습니다.
두 입력값이 모두 테이블이고 두 테이블 모두 행 이름을 갖는 경우 두 테이블의 행 이름은 동일해야 합니다. 그러나 각 입력값의 행 이름 순서는 다를 수 있습니다.
두 입력값이 모두 타임테이블인 경우 두 테이블의 행 시간값은 동일해야 합니다. 그러나 각 입력값의 행 시간값 순서는 다를 수 있습니다.
데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | table | timetable
복소수 지원 여부: 예
세부 정보
power는 실수 입력값에 대해 IEEE®-754 표준에서 권고하는 것과 다르게 동작하는 경우가 몇 가지 있습니다.
| MATLAB® | IEEE | |
|---|---|---|
|
|
|
|
|
|
팁
반복 곱셈에 대해
times또는.*를 사용하는 것이 정수 지수를 사용하는power또는.^을 사용하는 것보다 더 빠를 수 있습니다. 그러나 반복 곱셈은 오차가 누적되기 때문에 반올림 오차가 더 커집니다. 이는double데이터형에서 특히 중요합니다. 반올림 오차가 문제가 되지 않는 데이터형(예:int64)의 경우에는times를 사용할 수 있습니다. 예를 들어,x = int64(randi([1, 10], 10000, 1));을 정의하면, 연산y = x.*x.*x;는y = x.^3;보다 빠릅니다.
확장 기능
power 함수는 tall형 배열을 완전히 지원합니다. 자세한 내용은 tall형 배열 항목을 참조하십시오.
사용법 관련 참고 및 제한 사항:
X와Y가 모두 실수이지만power(X,Y)나X .^ Y가 복소수인 경우 시뮬레이션은 오류를 생성하고, 생성된 코드는NaN을 반환합니다. 올바른 복소수 결과값을 얻으려면complex(X)를 사용하여 값X를 복소수형으로 변환합니다. 예를 들면power(complex(X),Y)또는complex(X).^Y와 같습니다.코드 생성 시 이 함수에 대해 희소 행렬 입력값은 지원되지 않습니다.
사용법 관련 참고 및 제한 사항:
X와Y가 모두 실수이지만power(X,Y)나X .^ Y가 복소수인 경우 시뮬레이션은 오류를 생성하고, 생성된 코드는NaN을 반환합니다. 올바른 복소수 결과값을 얻으려면complex(X)를 사용하여 값X를 복소수형으로 변환합니다. 예를 들면power(complex(X),Y)또는complex(X).^Y와 같습니다.코드 생성 시 이 함수에 대해 희소 행렬 입력값은 지원되지 않습니다.
두 입력값 모두 스칼라여야 하고 지수 입력값 k는 정수여야 합니다.
power 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
power 함수는 GPU 배열 입력값을 지원하지만 다음과 같은 사용법 관련 참고 및 제한 사항이 있습니다.
밑
A또는 지수B가 희소 형식인 경우B는 스칼라여야 합니다.GPU에서 실행되는 함수의 출력값이 복소수일 수 있는 경우, 이 함수의 입력 인수를 명시적으로 복소수로 지정해야 합니다. 자세한 내용은 GPU에서 복소수 사용하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
자세한 내용은 GPU에서 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
power 함수는 분산 배열을 완전히 지원합니다. 자세한 내용은 분산 배열을 사용하여 MATLAB 함수 실행 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨power 함수(.^)로 정수 지수를 사용하여 요소별 거듭제곱을 계산할 때의 성능이 향상되었습니다. 예를 들어, 다음 코드는 5000×5000 배열의 각 요소를 3제곱합니다. 이 코드는 이전 릴리스보다 약 3.8배 빠릅니다.
function t = timingPower x = rand(5000); y = @() x.^3; t = timeit(y); end
대략적인 실행 시간은 다음과 같습니다.
R2025b: 0.80초
R2026a: 0.21초
코드 실행 시간은 Windows® 11, AMD EPYC™ 74F3 24-Core Processor @ 3.19GHz 테스트 시스템에서 timingPower 함수를 호출하여 측정했습니다.
이 성능 향상은 코드 변경에서 비롯되며, 이 변경으로 인해 배정밀도에서의 반올림 동작도 약간 달라져 더 정확한 결과를 도출합니다. 예를 들어, 다음 코드는 이제 과학 표기법에서 소수점 이하 15번째 자리까지 더 정확한 결과를 반환합니다.
format longE
y = 0.4543.^3y =
9.376229100700000e-02이전에는 동일한 코드가 다음과 같은 결과를 반환했습니다.
format longE
y = 0.4543.^3y =
9.376229100699998e-02MATLAB은 0.4543과 같은 10진수 입력값을 표현 가능한 최근접 배정밀도 이진 값으로 변환하므로, 원래의 10진수 입력과 정확히 일치하지 않을 수 있습니다. 이러한 이유로 .^ 연산자는 이제 배정밀도에서 더 정확하지만, 피연산자의 정확한 표현을 사용한 계산과는 결과가 다를 수 있습니다.
지수에서 단항 연산자 또는 논리적 부정 연산자와 결합된 거듭제곱 연산자의 순서를 지정할 때는 괄호를 사용하여 연산 순서를 명시적으로 지정해야 합니다. ^-, .^-, ^+, .^+, ^~ 또는 .^~가 포함된 연산에서 다른 거듭제곱 연산자를 함께 사용할 때 괄호를 생략하면 향후 릴리스에서 오류가 발생합니다.
예를 들어, y = 4.^-3.^-2과 같은 연산의 결과는 거듭제곱 연산과 부정 연산이 수행되는 순서에 따라 달라집니다. 따라서 괄호를 사용하여 의도한 연산 순서를 명시적으로 지정합니다. 예를 들어, 다음과 같습니다.
y = (4.^(-3)).^(-2)
y =
4096y = 4.^(-(3.^(-2)))
y =
0.8572y = 4.^((-3).^(-2))
y =
1.1665power 연산자는 테이블이나 타임테이블 내의 변수에 액세스하기 위한 인덱싱 없이 테이블과 타임테이블에 대한 직접 연산을 지원합니다. 모든 변수는 연산을 지원하는 데이터형을 가져야 합니다. 자세한 내용은 테이블 및 타임테이블에 대해 직접 계산 항목을 참조하십시오.
R2016b부터는 묵시적 확장이 추가되어, 이전에 오류를 반환했던 기본 연산을 위한 일부 인수 조합이 이제는 결과를 생성합니다. 예를 들어, 이전에는 행 벡터와 열 벡터를 더할 수 없었지만 이제는 이러한 피연산자들도 덧셈에서 유효합니다. 즉, [1 2] + [1; 2]와 같은 표현식은 이전에 크기 불일치 오류를 반환했지만 이제는 실행됩니다.
요소별 연산자를 사용하는 코드이면서 MATLAB이 이전에 크기 불일치에 대해(특히 try/catch 블록 내에서) 반환하던 오류에 의존하는 코드라면, 해당 코드는 더 이상 이러한 오류를 캐치하지 않을 수 있습니다.
기본 배열 연산에 필요한 입력 크기에 대한 자세한 내용은 기본 연산에 대해 호환되는 배열 크기 항목을 참조하십시오.
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)