Finding If a sub-array (1d) is there in a 2d array
9 次查看(过去 30 天)
显示 更早的评论
Hi,
Lets suppose we have
array2D = [1 2 3; 4 5 6; 6 7 8] how to find out cheaply that it contain "4 5 6" in a position?
I have a main dataset, which is like 10M samples and I have a test set conatining like 2M samples. The test set is a sub set of main set (infact randomly selected elements of main array). I need to find the index of each test sample into the main data file.
Pls give me a solution, as I am not able to do it cheaply yet.
Thanks in advance
0 个评论
采纳的回答
Paulo Silva
2011-6-12
For the example provided
array2D = [1 2 3; 4 5 6; 6 7 8]
v1= [4 5 6]
[tf,loc]=intersect(array2D,v1,'rows')
loc gives you the row number where you have v1 inside array2D, you might also take a look at the ismember function for similar purposes
2 个评论
Paulo Silva
2011-6-12
after you get the row number you can get all the index values, this is just for your example:
as=size(array2D)
idx=loc:as(1):numel(array2D) %all the index values
The code only works if there's just one row equal to v, if there are more use arrayfun
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!