나는 많은 계승을 반복해서 계산하는 코드를 최적화하고 있습니다. 호출은 몇 가지 다른 함수에서 왔으므로이 함수가 각 함수에 대한 인수로 미리 계산 된 계승 값을 배열에주는 것을 피하고자했습니다. 그러나 이것이 가장 빠른 방법이라고 생각합니다.계승의 사용을 최적화하는 matlab
전역 변수를 사용하는 것이 더 효과적이지만, 글로벌 변수 로딩이 계승의 계산만큼 오래 걸리므로 예상만큼 빠르지는 않습니다.
function [ facn ] = cfactorial(n)
global facs
if n > 170
facn = Inf;
elseif n == 0
facn = 1;
else
facn = facs(n);
end
또한 영구적으로 설정해 보았습니다. 그리 빠른 것도 아닙니다.
function [ facn ] = cfactorial(n)
persistent facs
if isempty(facs)
load('facs.mat')
facs = faccs;
end
if n > 170
facn = Inf;
elseif n == 0
facn = 1;
else
facn = facs(n);
end
"persistent facs"줄이 둘 다 있습니다. "글로벌 facs"이제는 프로파일 러에서 대부분의 시간이 걸립니다.
다른 방법이 있습니까? 변수를로드하지 않고 전역 적으로 사용할 수있는 변수를 정의 할 수 있습니까?
를 왜 모든 값의 배열을 미리 계산 해달라고 그런 다음 거기에서 그들을 얻을 수 있습니까? – mpaskov
그게 내가하는 일이다. 나는 모든 기능들 사이에서 배열을 공유하는 효율적인 방법을 찾고있다. 지금 당장 나는 그 배열을 지나가는 추가 인수를 추가했다. 그러나 그것은 내가 피하고 싶었던 것이다. 나는 내가 아직 모르는보다 우아하고 효율적인 방법이 있다면 대부분 관심이있다. – kili
내장 된 감마 기능을 사용하는 것은 어떻습니까? –