How can I match two vectors using the discrete inverse transform method?
조회 수: 1 (최근 30일)
이전 댓글 표시
iV=reshape(pr,1,[]);% pr represents the pobability matrix
V=cumsum(V)/sum(V);
figure, cdfplot(prc)
U=rand(1,100)
I have a probability map (V) containing 4096 elements (see figure). I've also generated a vector U containing 100 random uniform probabilities. Now i want to match each elment of U to the correseponding probalility on the figure, using the discrete inverse transform method (Vj-1=<Ui<Vj). I'll apprecaite your help.
댓글 수: 0
채택된 답변
darova
2019년 5월 3일
Give each element of U and compare with every element of V
ind = zeros(size(U));
for i = 1:length(U(:))
[~, ind(i)] = min( abs(U(i)-V) );
end
I think ismember() can be faster solution, but don't know how to apply it here
댓글 수: 4
darova
2019년 5월 3일
tol = 1000; % tolerance: 3 position after decimal point
[~, ind] = ismember( round(U(:)*tol),round(V(:)*tol) );
% V(:) - reshape matrix to vector
% U(i) == V(ind(i)) - (if ind(i) is not zero)
If you have linear index and want to convert it to [rows,columns]:
matrix_size = [m,n];
[I,J] = ind2sub(matrix_size,IND);
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!