입자 필터 알고리즘을 구현하기 위해 추적 할 객체와 관련된 움직임에 대한 가설을 생성해야합니다. N 샘플을 설정하고 2x1x 상태를 사용하면 벡터, 그럼 각 단계에서 N 임의의 값 쌍 (2 x N 행렬)을 생성해야합니다. 또한 운동 통계 (평균 및 표준 편차)를 알고있는 경우 평균 및 표준 편차를 사용하여 모든 N 값을 생성 할 수 있습니다. 마지막으로, 움직임의 불확실성을 모델링하기 위해 노이즈 매트릭스 (2 x N 행렬)를 생성하여 이동 행렬에 추가 할 수있었습니다.난수 생성기를 올바르게 설정하는 방법은 무엇입니까?
이러한 전제를 기반으로 matlab에서 실행되는 알고리즘을 구현했으며 다음과 같은 코드를 사용하여 이동의 가설을 생성했습니다. 위의 MATLAB 코드가 좋은 예측 (이 잘 작동), 대신 C로 작성된 동일한 코드는 ++ (코드 참조를 생성하면서, 실질적으로 : 나는 C++과 OpenCV의를 사용하여 동일한 알고리즘을 구현했을 때
ds_mean = [dx_mean dy_mean];
ds_stddev = [dx_stddev dy_stddev];
d = 5;
V = zeros(2,N);
V(1,:) = normrnd(ds_mean(1),ds_stddev(1),1,N); % hypotheses of movement on x axis
V(2,:) = normrnd(ds_mean(2),ds_stddev(2),1,N); % hypotheses of movement on y axis
E = d*randn(2,N); % weighted noise
M = V + E; % hypotheses of movement
는 문제가 발생했습니다 아래)는 열악한 예측 (즉, 대상으로부터 멀리 떨어진 곳)을 생성합니다. 왜?
RNG m_rng;
x_mean = // ...
y_mean = // ...
x_stddev = // ...
y_stddev = // ...
Mat velocity(STATE_DIM, NUM_PARTICLES, DataType<double>::type);
m_rng.fill(velocity.row(0), RNG::NORMAL, x_mean, x_stddev);
m_rng.fill(velocity.row(1), RNG::NORMAL, y_mean, y_stddev);
Mat noise(STATE_DIM, NUM_PARTICLES, DataType<double>::type);
m_rng.fill(noise,RNG::NORMAL,0,1);
noise *= d; % weighted noise
movements = velocity + noise;
어떻게 C++ 알고리즘이 matlab에 구현 된 알고리즘과 함께 작동하는지 확인하려면?
코드에서 반환 한 임의의 벡터를 사용하여 정규 분포에 따라 값을 분산하는 방법은 무엇입니까? – enzom83