Qu'est-ce qu'une manière rapide et élégante d'utiliser MatLab pour former un sous-réseau autour d'un élément particulier? Les éléments sont sélectionnés aléatoirement à partir des données, de sorte que vous ne pouvez pas prendre un sous-réseau de la manière normale (il doit être généralisé pour les éléments sélectionnés). Ce que je veux dire est, formant un tableau par exemple 5x5 ou 7x7 ou quelque chose, où l'élément du milieu est celui que vous voulez.Méthode générale de création de sous-réseaux autour d'un élément particulier
Merci, mais je veux dire une approche plus générale. Excusez-moi de ne pas avoir été clair. Ce que je veux dire quelque chose comme, disons que
a = magic(10)
b = find(a<8) %giving linear indices
m = size(a)
[r,c] = ind2sub(m,b) %giving rows and columns of the elements that you later want to select
puis je pensais à faire le reste à l'aide pour les boucles, mais ne suis pas vraiment sûr de savoir comment généraliser et je me demandais, comme je l'ai dit, s'il y a un moyen plus facile de le faire en utilisant MatLab. La raison d'une telle approche générale est que je veux analyser n'importe quel tableau pour des éléments avec certaines propriétés et ensuite être capable de former un sous-tableau autour de chaque élément pour zoomer dessus pour d'autres analyses de données si cela a du sens.
+1: Nice solutions. La seule limitation est la nécessité pour l'Image Processing Toolbox d'utiliser les fonctions IM2COL et IMDILATE. – gnovice
En ce qui concerne la première solution, je pense que vous avez oublié d'ajuster les indices 'b' pour prendre en compte le remplissage ajouté à la matrice. – gnovice
Je ne pense pas. im2col avec la fenêtre glissante par défaut donne les colonnes (nRowArray-nRowWindow + 1) * (nColArray-nColWindow + 1). Si vous utilisez la moitié de la taille de la fenêtre, vous obtenez exactement les sous-fenêtres nRowArray * nColArray. Ainsi, vous indexez directement avec b. – Jonas