2013-03-18 2 views
1

우선 저는 matlab에 익숙하지 않아이 포럼에서 제 무지를 변명합니다.wiener 프로세스의 무작위 추출

나는 다음과 같은 방법으로 표준 소음원 과정을 생성한다. (나는 어리 석거나 잘못 알고 있다면 그것을 알고있다.)

s =0.0001; % stepsize 
t = [0:s:T]; % divide interval into steps 

G=sqrt(s)*randn(length(t),1); 

Y=cumsum(G); 

지금은 어떤 임의의 시간에 그 값을 찾으려는 말 :

u=rand(4,1) 

내가 다음

for i = 1:length(u) 
    row(i) = find(t < u(i),1,'last'); 
end 

과 같은 작업을 수행하는 (구글과 인내로) 파악 간단히 Y 값을 가져오고 싶지만 좀 더 직접적인 방법을 찾고 싶습니다. 어떤 제안이 있습니까?

답변

1

u의 각 요소에 대해 기본적으로 수행하는 작업은 t에서 가장 큰 요소의 인덱스를 찾는 것입니다. 다음 한 줄을 시도해보십시오

sum(bsxfun(@lt, repmat(t(:)', numel(u), 1), u(:)), 2) 

을 어떤이가하는 것은 :

  1. 각 행은 t 동일 repmat를 사용하여 매트릭스를 생성합니다.
  2. u의 해당 요소보다 작은 요소에 대해 bsxfun을 사용하여 각 행을 검사하십시오.
  3. 각 행의 1을 모두 누적하면 근본적으로 마지막 작은 요소의 인덱스가 제공됩니다.

그런데 괄호 ([])를 t = [0:s:T]에 넣을 필요가 없습니다. 콜론 연산자 (:)는 이미 벡터를 출력합니다.

+1

완벽 했어, 내가 찾고 있었던 것이었다! 나는 많은 새로운 MATLAB 함수를 배울 수 있기를 바라고 있었다. 나는 문서화를 떠났다 : D – Henrik