Il s'agit d'incrémenter une valeur d'une matrice MATLAB plusieurs fois dans la même instruction, sans avoir à utiliser une boucle for.Incrémentation d'une valeur d'une matrice MATLAB plusieurs fois dans une ligne
Je mis mon tableau comme:
>> A = [10 20 30];
Et puis exécutez:
>> A([1, 1]) = A([1, 1]) + [20 3]
A =
13 20 30
Il est clair que le 20 est ignoré. Cependant, je voudrais qu'il soit inclus, de sorte que:
>> A = [10 20 30];
>> A([1, 1]) = A([1, 1]) + [20, 3]
donnerait:
A =
33 20 30
Y at-il une fonction pour permettre que cela se fasse dans un joli mode vectorisé?
(En réalité, l'indexation au tableau comprendrait plusieurs index, il pourrait être [1 1 2 2 1 1 1 1 3 3 3]
etc., avec un tableau de nombres à incrémenter par (le [20, 3]
ci-dessus) de la même longueur.)
aaargh, 30 secondes plus vite :) – Adrien
Merci, j'ai ce premier travail un régal. Je crois qu'il y a un symbole de transposition manquant sur le SUBS - je pourrais seulement faire 'A = accumarray ([1: numel (A) index] ', [A incrément]);' travail. Je ferai quelques comparaisons de vitesse pour la deuxième suggestion une fois que mes données seront peuplées. –
@Bill: Vous avez raison. J'ai oublié que la première entrée doit être un vecteur de colonne dans ce cas. En général, la première entrée doit être une matrice M-by-N où M est le nombre de valeurs accumulées et N le nombre d'indices (1 dans ce cas, mais plus pour l'indexation multidimensionnelle). – gnovice