나는 최대한 효율적으로 저장하고 내 MATLAB 모양 함수를 호출하는 방법을 찾으려고 노력하고있어. 내가 간격 x=linspace(0,20)
과 위치 벡터matlab 모양 함수의 효율적인 저장
count = 10;
for i=1:count
pos(i)=rand()*length(x);
end
이 그리고 지금, 나는 컴팩트 지원 또는 모자 - 기능 또는 유사한 뭔가 가우스 - 커널과 같은 모든 위치 pos(j)
형상 함수에 넣을 (그것은 할 수 있어야한다 프로토 타입 기능을 쉽게 변경). 이 기능의 지원은 평활화 길이 h
에 의해 제어됩니다. 그래서 내가 같이하는 .m 파일에서 함수 (예 : 큐빅 스플라인)
function y = W_shape(x,pos,h)
l=length(x);
y=zeros(1,l);
if (h>0)
for i=1:l
if (-h <= x(i)-pos && x(i)-pos < -h/2)
y(i) = (x(i)-pos+h)^2;
elseif (-h/2 <= x(i)-pos && x(i)-pos <= h/2)
y(i) = -(x(i)-pos)^2 + h^2/2;
elseif (h/2 < x(i)-pos && x(i)-pos <=h)
y(i) = (x(i)-pos-h)^2;
end
end
else
error('h must be positive')
end
그리고이 너무 좋아 지금까지
w = zeros(count,length(x));
for j=1:count
w(j,:)=W_shape(x,pos(j),h);
end
같은 간격 x
내 기능을 구성을 구성하지만 때 내가 x=linspace(0,20,10000)
과 count=1000
을 만들면, 내 컴퓨터 (Intel Core-i7)가 몇 분이면 모든 것을 계산할 수 있습니다. 일종의 PDE-Solver이어야하므로이 절차는 모든 시간 단계 (특정 상황에서)에서 수행되어야합니다. 내 문제는 내 함수 호출에 대한 인수로 x
을 사용하고 저장소 대신 모든 함수를 저장하고 이동한다고 생각하지만 내 matlab 지식은 그렇게 좋지 않으므로 조언이 필요합니까? Fyi : 두 개 이상의 함수 지원이 교차하는 영역의 통합이 필요합니다 ... 1D에서이 작업을 완료하면 2D 함수에 대해 수행해야하므로 효율적이어야합니다.
와우, 많은 도움이되었습니다. 감사. 이제는 CPU 사용량이 가장 많은 부분이 제 모양 기능이 아니라는 것을 알았습니다 (예를 들어 효율이 엄청나게 향상되었지만).하지만 교차점을 찾고 해당 영역의 적분을 계산하는 함수입니다. –