2012-03-25 4 views
2

주어진 프레임에서 정상 (0) 또는 흥분 (1) 일 수있는 입자 상태를 시뮬레이트하고 싶다고합시다. 입자는 시간의 여기 된 상태입니다. 입자가 여기 상태에 있으면, ~ L 프레임 동안 지속됩니다 (포아송 분포 포함). 나는 N 시간 동안 그 상태를 시뮬레이션하고 싶다.matlab : 전정 상태 시뮬레이션

N = 1000; 
f = 0.3; 
L = 5; 

결과는 합 (주)와

state(1:N) = [0 0 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 ... and so on] 

같은 그 작업을 수행하는 방법에 0.3

에/N 가까이 될 것입니다 : 그래서 입력 예를 들어입니까? 감사합니다.

+0

입자가 상태를 뒤집을 확률은 얼마입니까? –

+0

나는 그게 무슨 뜻인지 정말로 모르겠다. 제가 정확히하고 싶은 것은 두 가지 다른 확산 계수를 가진 입자의 확산 거동을 시뮬레이션하는 것입니다.이 확산 계수는 더 빠르고 느린 성분 (f)과 일종의 수명의 일종을 정의합니다. 상태를 먼저 시뮬레이트 (이 경우 두 개, 가능하면 더 많음)하고 상태에 따라 변위와 좌표를 시뮬레이트하고 싶습니다 (더 빠르거나 느리게 ...). 나는 그것이 최선의 방법인지는 모르지만 그것은 내 마음 속의 첫 번째 것이다. – Art

+0

@ NoamN.Kremen f = 0.3이고 상태 1의 길이는 5이다. 평균은 약 17 (5/0.3)이어야하며 따라서 0에서 1로 뒤집기의 변화는 0.06입니다. 편집 :이 진술이 완전히 사실인지 확실하지 않습니다. – Bernhard

답변

2
%% parameters 
f = 0.3; % probability of state 1 
L1 = 5; % average time in state 1 
N = 1e4; 
s0 = 1; % init. state 
%% run simulation 
L0 = L1 * (1/f - 1); % average time state 0 lasts 
p01 = 1/L0; % probability to switch from 0 to 1 
p10 = 1/L1; % probability to switch from 1 to 0 
p00 = 1 - p01; 
p11 = 1 - p10; 
sm = [p00, p01; p10, p11]; % build stochastic matrix (state machine) 
bins = [0, 1]; % possible states 
states = zeros(N, 1); 
assert(all(sum(sm, 2) == 1), 'not a stochastic matrix'); 
smc = cumsum(sm, 2); % cummulative matrix 
xi = find(bins == s0); 
for k = 1 : N 
    yi = find(smc(xi, :) > rand, 1, 'first'); 
    states(k) = bins(yi); 
    xi = yi; 
end 
%% check result 
ds = [states(1); diff(states)]; 
idx_begin = find(ds == 1 & states == 1); 
idx_end = find(ds == -1 & states == 0); 
if idx_end(end) < idx_begin(end) 
    idx_end = [idx_end; N + 1]; 
end 
df = idx_end - idx_begin; 
fprintf('prob(state = 1) = %g; avg. time(state = 1) = %g\n', sum(states)/N, mean(df)); 
+0

정말 끝내 주셔서 감사합니다, 많이 Serg! – Art

2

여기 상태의 평균 길이는 5입니다. 정상 상태의 평균 길이는 따라서 약 12가되어야합니다.

전략은 다음과 같을 수 있습니다. 0

  • 는 평균 L와 Poission 분포로부터 임의의 숫자 b 그리기 a 제로로 상태 어레이를 채우기 평균 L*(1-f)/f
  • 갖는 포아송 분포로부터 임의의 숫자 a 그리기 상태

    • 시작
    • 상태 배열 witb b을 채 웁니다.
    • 반복

    또 다른 옵션은 0-> 1 1-> 0 확률이 불평등 전환 확률의 관점에서 생각하는 것입니다.