Örneğin, bir 10×10
matrisim varsa ve bu matriste n
koordinatlarının bir listesi varsa, her bir koordinatı çevreleyen 3×3
bölgesini almak istiyorum, uzunluğu 9
vektörü olarak yeniden boyutlandırıp tüm 9×n
matrisine vektörler. Bunu yapmak için bir döngü yazabileceğimi biliyorum ama bu muhtemelen sonuçta ne yapacağım olsa da, iğrenç görünüyor.Matriste birden çok yerel bölgeyi yeni bir matrise dönüştürmek mümkün mü?
1
A
cevap
1
koordinatları endeksi şeklinde zaten varsayarsak, bu kullanabilirsiniz: Tabii, bu koordinatlar için
c1 = [3 3; 7 5; 4 7];
cc = sub2ind(size(A), c1(:,1), c1(:,2));
kontrol etmez:
m = 10;
A = rand(m);
cc = [23; 47; 64];
ind = bsxfun(@plus, [(-1:1) - m, (-1:1), (-1:1) + m], cc);
newVals = A(ind);
Veya ilk dönüştürme indeks forma koordinatları Matrisin kenarlarında olmak ve koordinatlardan herhangi biri varsa bir hata atmak.
2
Bunun bir for döngüsünden daha fazla performans gösterip göstermediğinden emin değilim, ancak bunu dizin değerleri üzerinde bazı hesaplamalar yaparak yapabilirsiniz.
data = magic(5);
%// 17 24 1 8 15
%// 23 5 7 14 16
%// 4 6 13 20 22
%// 10 12 19 21 3
%// 11 18 25 2 9
%// The coordinates you want to sample at (row, col)
coords = [2 3; 3 2; 2 4];
%// Determine the row and column offsets to apply for a 3x3 block
[rowOffset, colOffset] = ndgrid(-1:1,-1:1);
%// Compute the rows and columns included in each block centered t each point
rows = bsxfun(@plus, coords(:,1).', rowOffset(:));
cols = bsxfun(@plus, coords(:,2).', colOffset(:));
%// Convert to absolute linear index and sample data at these regions
newdata = data(sub2ind(size(data), rows, cols));
%// 24 23 1
%// 5 4 7
%// 6 10 13
%// 1 5 8
%// 7 6 14
%// 13 12 20
%// 8 7 15
%// 14 13 16
%// 20 19 22
sen potansiyel aynı şeyi başarmak için konvolüsyonunu falan kullanabilirsiniz bu grupların her biri ile ne yapmak istediğinize bağlı olarak söyleniyor.
İlgili konular
- 1. İki listeyi bir matrise dönüştürmek
- 2. Emberjs'te birden çok değeri filtrelemek mümkün mü?
- 3. Tipleri bir parametre paketine dönüştürmek mümkün mü?
- 4. Birden çok satırlı tableless seçime sahip olmak mümkün mü?
- 5. Char [] 'dan char *' a dönüştürmek mümkün mü?
- 6. Bir dizi panda komutunu birden çok satıra bölmek mümkün mü?
- 7. , tek bir işleyiciyi birden çok etkinliğe eklemek mümkün mü?
- 8. Tensorflow'da bir ağı birden çok GPU'ya bölmek mümkün mü?
- 9. Birden çok dinamik pivot ile bir sorgu yazmak mümkün mü?
- 10. Bir geri çağrıyı bir uyumsuz bloğa dönüştürmek mümkün mü?
- 11. Seç menüyü düğmelere dönüştürmek mümkün mü?
- 12. GroupCollection'ı Listeye veya IEnumerable'a dönüştürmek mümkün mü?
- 13. Çok satırlı bir #warning yönergesi mümkün mü?
- 14. Resmi matrise dönüştürmek veya tam tersi mi?
- 15. Zaman dilimini saatlere dönüştürmek mümkün mü?
- 16. Google Haritalar'da bir bölgeyi vurgulama
- 17. Bir dizeyi MATLAB'de değişken kod adına dönüştürmek mümkün mü?
- 18. Sanal Ağaç Görünümünde birden çok sütun seçmek mümkün mü?
- 19. Ülkeye göre birden çok APK desteğine sahip olmak mümkün mü?
- 20. HttpRuntime.Cache'i birden çok web sunucusu arasında paylaşmak mümkün mü?
- 21. Görüntüde birden çok çevre çizgisi çizmek mümkün mü
- 22. Joomla'yı kullanarak birden çok güncelleştirme sorgusu çalıştırmak mümkün mü?
- 23. Greasemonkey kullanıcı komut dosyalarını birden çok dosyaya bölmek mümkün mü?
- 24. Perlbrew kullanarak mimariye göre birden çok yükleme yapmak mümkün mü?
- 25. Birden çok SearchRecentSuggestionsProvider sınıfları Android uygulamasında mümkün mü?
- 26. Win32 uygulama projesini bir konsol uygulamasına dönüştürmek mümkün mü?
- 27. mümkün mü?
- 28. Kendi özel yerel ayarınızı oluşturmak mümkün mü
- 29. SFSafariViewController'da yerel pdf dosyası yüklemek mümkün mü?
- 30. Yeni Facebook Sayfası Eklentisini stillendirmek mümkün mü?
İlk düşünce: "10" 10 "kez çalıştırmak yerine" n "kez çalıştıran bir döngü yazabilirsiniz. Koordinatların sayısı kesinlikle en az 10 * 10' (veya matrisinizdeki elemanların sayısı) daha az olacaktır. Bu, diğer her işi hemen hemen tümleştirebildiğiniz için bazı hesaplama zamanlarını koruyacaktır. Pseudocode'da şöyle bir şey olurdu: i = 1: n; koordinat çevresi 3x3 bölgesini ayıklayın * i *; birleştirme matrisi – Alessiox