Delphi Can

Orjinalini görmek için tıklayınız: Matrislerle çalışmak
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Merhaba arkadaşlar, matrisler ile ilgili bir konuda yardıma ihtiyacım var. Elimde 2 matris var biri 3x3 diğeri 9x9 mesela, 
amacım; 9x9 matrisin içinde 3x3 matris nerelerde kullanılmış (x ve y koordinatları yani) ?
Örneklemek gerekirse;

5 3 2
4 6 8
8 1 7
matrisi

1 2 3 8 4 5 4 5 3
2 3 5 8 5 3 2 1 1
1 2 2 2 4 6 8 2 3
2 3 4 5 8 1 7 0 0
0 0 0 5 3 2 3 3 5
2 2 2 4 6 8 1 2 3
4 5 6 8 1 7 4 5 3
4 1 2 5 6 8 4 6 9
7 5 6 3 2 1 4 5 6 

bana diyecek ki  
1. kullanım : 5-2 (x:5 y:2 den başlıyor)
2. kullanım : 4-5 (x:4 y:5 ten başlıyor)
gibi,
tabi bendeki bulunacak matris 10x3, aranacak matris 700x300 gibi olacak.
Merhaba,

Ben olsam 3x3 matrisin ilk elemanını, yani "5"i 9x9'da aratırım, karşılaştığım sütunun (X) pozisyonunu ve satırın (Y) değerini bir değişkene atarım, sonrasında;

satır bazında X, sütun bazında Y değerini kullanarak 9x9'un ilgili kısmında 3x3 kadarlık bir kıyaslama yaparım.

Eşleşme varsa o kısım ile ilgili yapacağım şeyleri yaptıktan sonra X + Matris genişliği kadar ilerler ve "5"i aramaya devam ederim. Bu işlem 9x9 matrisin sonu - 3'e gelene kadar devam ettiririm.

Yani tarayacağım alan 9x9 - 3x3 = 6x6'lık bir alan olur
Aslında bir çalışma yapmaya başladım hocam,
9x9 matrisin her satırında aranacak matrisin ilk elemanını aratıyorum, bulunca direk 9x9 un sonraki 2 değerini de kontrol ediyorum, eğer denkleşirse, bu sefer de bir alt satırında 3x3 ün 2. satırını kontol ediyorum, eğer bunuda bulursa 3x3 ün 3. satırını bir alt satırda arıyorum, bulursa ilk x,y değerim ve aranan matrisin son elemanının x,y değerleri elime geçmiş oluyor, sonrasında kaldığım yerden aynı şekilde devam ediyorum, dediğiniz gibi ilk elemanı bulduğum zaman diğerlerini ilgili yerlerde kontrol etmem yetiyor. Fakat bunun belli bir algoritması varmıdır onu merak etmiştim. Zira benim arananan alanım 1000*800 gibi eleman içeriyor, aranacak alanım ise minimum 5x5 alan içeriyor.

Kısaca bmp içinde bmp arıyorum hocam, kaç tane bulursam kare içine almam gerekiyor.
Bence TArray.BinarySearch çok işinize yaracaktır.

Yardım dokümanında şöyle bir not varmış yeni fark ettim Sad
Note: BinarySearch requires that the array be sorted.
Binary Search'ın bu konuda nasıl işe yarayacağını anlamadım? Fotoğraf verisi doğası gereği zaten sıralanmamış olacaktır, sıralansa bu sefer sıralı hali işimize yaramaz?
(24-06-2019, Saat: 15:14)uparlayan Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba,

Ben olsam 3x3 matrisin ilk elemanını, yani "5"i 9x9'da aratırım, karşılaştığım sütunun (X) pozisyonunu ve satırın (Y) değerini bir değişkene atarım, sonrasında;

satır bazında X, sütun bazında Y değerini kullanarak 9x9'un ilgili kısmında 3x3 kadarlık bir kıyaslama yaparım.

Eşleşme varsa o kısım ile ilgili yapacağım şeyleri yaptıktan sonra X + Matris genişliği kadar ilerler ve "5"i aramaya devam ederim. Bu işlem 9x9 matrisin sonu - 3'e gelene kadar devam ettiririm.

Yani tarayacağım alan 9x9 - 3x3 = 6x6'lık bir alan olur

ilk eleman değerini bulup 9 ar arttırmak bencede en mantıklı çözüm.
(24-06-2019, Saat: 21:03)uparlayan Adlı Kullanıcıdan Alıntı: [ -> ]Binary Search'ın bu konuda nasıl işe yarayacağını anlamadım? Fotoğraf verisi doğası gereği zaten sıralanmamış olacaktır, sıralansa bu sefer sıralı hali işimize yaramaz?

Satır satır arama yapmamızı sağlayacaktı. 
Küçük matrisin satırları, büyük matrisin satırları içinde aranabilecekti.
Normalde bu olay matristeki sub matris aramadan geçiyor farklı dillerde bazı çalışmalar var. Delphide pek bulamadım

buradaki örnek ile belki ilerleyebilirsiniz en azından nasıl başlayabilirsiniz ve ne kullanılır öğrenebilirsiniz

https://stackoverflow.com/questions/1052...x-n-matrix

Kolay gelsin