how to find patterns in an array
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hello
I have a 19*19 array filled with either a 1, -1 or a 0.
I need to find patterns of 5 repeating values next to each other of any value in both row and columns, and then store where the patterns are in an array.
example:
[1 0 0 0 0 0 1 0 -1 ]
and then store where the patterns are in another 19*19 array. As either a row pattern, column pattern or both.
any suggestions on how to do it? I'm completely lost.
1 Kommentar
Akzeptierte Antwort
Guillaume
am 3 Okt. 2014
A loop is probably the simplest and clearest way to do it:
A = randi(3, 20) - 2; %for demo
patternlength = 5;
pl = patternlength - 1; %actually more useful than patternlength
positions = zeros(size(A)) %output matrix
for col = 1:size(A, 2) - pl
for row = 1:size(A, 1)- pl
if all(diff(A(row:row+pl, col)) == 0) || all(diff(A(row, col:col+pl)) == 0)
positions(row, col) = 1;
end
end
end
0 Kommentare
Weitere Antworten (2)
Andrei Bobrov
am 3 Okt. 2014
n = 5;
idxv = find(conv2(double(diff(A) == 0),ones(n-1,1),'same') == n-1);
idxv = idxv - 1;
idxh = find(conv2(double(diff(A,1,2) == 0),ones(1,n-1),'same') == n-1);
idxh = idxh - size(A,1);
0 Kommentare
Siehe auch
Kategorien
Mehr zu Multidimensional Arrays finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!