Je veux créer un n-by-n
logique matrice A
sur la base de deux vecteurs d'indice-n-by-1
a
et b
, tels que le (i,j)
-ième élément à A
est 1
si et seulement si a(i)==b(j)
.Matlab: appariement efficace des indices de ligne et de colonne dans la matrice
Une façon de faire est la suivante:
a = [1 1 2 3]';
b = [2 3 1 3]';
n = 4;
a_mat = repmat(a, [1 n]);
b_mat = repmat(b', [n 1]);
A = a_mat == b_mat;
Le problème avec cette approche est qu'il devient tout à fait mémoire à forte intensité si n
est grande. Je suis à la recherche d'une approche plus efficace qui ne nécessite pas la création d'énormes matrices a_mat
et b_mat
et est également raisonnable rapide.
Bon à savoir, je me demandais si l'expansion implicite fonctionne. Malheureusement, je suis toujours coincé avec 2016a pour l'instant ... – Bob