Finding sequence in matrix
Show older comments
I have a matrix and I want find which row contains some sequence. For example:
- A= [8 5 2 3 -1 0 4 -2 5 0 0 0
- | 5 3 4 -2 1 6 -1 -3 0 0 0 0|
- | -1 3 5 2 0 4 2 0 0 0 0 0];|
- and sequence is:
- seq=[4 -2 1];
- Result shoulde be:
- Result=2
- I tried to use xcorr function like this:
- [m n]=size(A);
- for i=1:m
- fi(i)=max((xcorr(A(i,:),seq)));
- end
- [no index]=max(fi);
- result=index
- But it doesnt work in some cases. Thanks for any help.
Accepted Answer
More Answers (1)
Image Analyst
on 11 Mar 2013
Try this:
A= [8 5 2 3 -1 0 4 -2 5 0 0 0
5 3 4 -2 1 6 -1 -3 0 0 0 0
-1 3 5 2 0 4 2 0 0 0 0 0]
template = [4 -2 1]
% Here's how to do it.
out = normxcorr2(template, A)
[row, column] = find(out == 1)
3 Comments
Image Analyst
on 11 Mar 2013
Forgot to mention that it requires the Image Processing Toolbox.
Viktor
on 31 Mar 2013
Image Analyst
on 31 Mar 2013
Funny -- I just copied and pasted and it ran perfectly. Why do you say it doesn't work?
Categories
Find more on Correlation and Convolution in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!