Hi!
Please see my example below. I start with a non-scalar structure, which I concatenate into a 3d-array. I then find the minimum values and their indices in the 3rd dimension using 'min'. Then, from a second array of exactly the same size, I want to extract a new array with entries corresponding to indices in the min value indices from the other array. I can do this perfectly well with the loop below, but doing it by vectorization would be twice as fun 🙂
The values in 'b' array is chosen to better illustrate the problem, as it is directly related to the 'pageIdx' array.
BR Andreas.
s(1).f=rand(2); s(2).f=rand(2); s(3).f=rand(2); a=cat(3,s.f); b=ones(2,2,3); b(:,:,2)=2; b(:,:,3)=3; [minVals,pageIdx]= min(a,[],3) bSize = size(b); nRows = bSize(1); nCols = bSize(2); bMinVals = zeros(nRows,nCols); for iRow = 1:nRows for jCol = 1:nCols bMinVals(iRow,jCol)=b(iRow,jCol,pageIdx(iRow,jCol)); end end bMinVals == pageIdx
Best Answer