Find the position of numbers in array
7 次查看(过去 30 天)
显示 更早的评论
Hello everybody, I'm trying to find the position of some values in an array. The values i'm interested in are in a 1x182 vector and I want to find they're position in a 1x1820 vector (practically I'm just looking for a percentile). Can you guess how I can find them?
PS: i did it with a for loop using the find function but i think it is a non-efficient way, there must be an easier and fast way!
Thank a lot in advance,
Marco
0 个评论
回答(3 个)
Star Strider
2022-9-30
I am not certain what you are asking.
2 个评论
Star Strider
2022-9-30
Getting them is straightforward. Getting them in that exact order requires a bit of coding gymnastics —
a = [4 5 7 2 1 6 3 9 8];
b = [2 7 8];
[~,idx] = ismember(a, b);
[idx_sorted,sortidx] = sort(idx(idx>0));
idx2 = find(idx);
Result = idx2(sortidx)
.
Ergin Sezgin
2022-9-30
编辑:Ergin Sezgin
2022-9-30
Hello Marco,
Following code might help with your task:
rng(2022)
inputArray = 100*rand(1,1820); % you should use your array
selectedElems = randperm(1820,182); % random indexing for subset,
yourVector = inputArray(selectedElems); % you should use your vector instead
elemPositions = zeros(size(yourVector)); % result vector for determined positions
for i=1:size(yourVector,2)
elemPositions(1,i) = find(inputArray==yourVector(1,i));
end
isequal(selectedElems, elemPositions) % Compare real and determined positions
Good luck
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!