행렬의 각 요소가 요소가 선택 될 확률을 나타내는 매우 큰 정사각형 행렬 M (i, j)가 있다고 가정합니다. 가중치 임의 선택. 나는 (i, j) 인덱스에 의해 행렬로부터 n 개의 원소를 대체 할 필요가있다. 메인 루프의 반복마다 가중치가 변경됩니다. 때문에 for 루프에 MATLAB의 매우 큰 배열의 인덱스로 n 개의 가중치를 선택하십시오
for m = 1:M_size
xMean(m) = mean(M(:, m));
end
[~, j_list] = histc(rand(n, 1), cumsum([0; xMean'./sum(xMean)']));
for c = 1:n
[~, i_list(c)] = ...
histc(rand(1, 1), cumsum([0;, M(:, j_list(c))./sum(M(:, j_list(c)))]));
end
을하지만이 또한 매우 긴 시간이 소요 다소 투박한 방법을 것 같다 :
현재, 나는 다음과 같은 것을 사용하고 있습니다. 더 효율적인 방법이 있습니까? 아마 내가 어떤 식으로 행렬을 벡터화한다면?
* 나는 통계 도구 상자에 미리
많은 감사를 액세스 할 수 없습니다 언급해야 편집.
하기 위해 행렬을 벡터화 실험 후 실제로없이 (histc 한 번 cumsum, 그렇게하는 것은 더 오래 걸립니다 ... – Huggzorx
당신이 M 행렬의 합을 알고 있는가 것으로 보인다 전화 그것을 요약)? – Pursuit
확률이 임의로 평가되므로 합계가없는 합계를 알 수 없습니다. 이는 행렬의 일부 요소 값만 늘리는 보강 학습 알고리즘의 일부로 사용되기 때문입니다. 단순히 합계를 한 번 계산 한 다음 각 값에 새 값을 추가 할 수 있습니다. – Huggzorx