Determine indices of how many times (x,y) coordinates occur in 2d vector
6 次查看(过去 30 天)
显示 更早的评论
I wand to check if 2d coordinates of type (x,y) occur many times in 2d vector. I just want to count the number of times they occur if they occur at least two times and I also need the indices for this secondt (and beyond) times they occur.
0 个评论
采纳的回答
Star Strider
2020-11-4
Try this:
M = randi(5, 25, 2); % Create ‘LatLon’ Data
[Mu,~,idx] = unique(M, 'rows'); % Unique Rows
Tally = accumarray(idx, (1:numel(idx)).', [], @(x) {M(x,:)}); % Calculate Frequencies, Return Pairs By Group
pairs = cellfun(@(x)size(x,1), Tally); % Recover ‘LatLon’ Pairs
idxc = accumarray(idx, (1:numel(idx)).', [], @(x) {x.'}); % Get Indices
idxmtx = zeros(numel(pairs),max(pairs(:))); % Create Matrix For Indices
for k = 1:size(idxmtx,1)
idxmtx(k,1:pairs(k)) = [idxc{k}]; % Assign Indices To Appropriate Rows
end
[~,ixs] = sort(pairs, 'descend'); % Sort Them
Result = table(Mu(ixs,:),pairs(ixs),idxmtx(ixs,:), 'VariableNames',{'LatLon','Frequency','Indices'}); % Output Table Of Pairs & Frequencies
ResultSel = Result(pairs(ixs) > 1,:) % Select Only Occurrences > 1
Substitute your coordinates for the ‘M’ matrix in my code.
If the coordinates are not exact, consider substituting uniquetol with the ByRows name-value pair for unique.
.
0 个评论
更多回答(1 个)
Ramya Dodla
2020-11-4
编辑:Ramya Dodla
2020-11-4
MATLAB ismember function will provide you with the indices of (x,y) occurance. Try the following code. This will give you a 5x1 array where 1 represent (x,y) occurance.
x = 0;
y = 1;
arr=[2 0 0 0 0; 1 1 1 1 1];
presentMatrix = ismember(arr.', [x y], 'rows');
The following code should provide number of occurances
sum(presentMatrix(:) == 1)
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!