7
votes

Comment déplacer des éléments d'un tableau vers la gauche sans utiliser des boucles dans Matlab?

J'ai un tableau de tailles fixes dans Matlab. Quand je veux insérer un nouvel élément, je fais ce qui suit:

  1. Pour faire de la place, le premier élément de tableau sera écrasé
  2. Tous les autres éléments seront décalés au nouvel emplacement Index-1 --- SHIFT DE GAUCHE.
  3. Le nouvel élément sera inséré à la place du dernier élément qui devient vide en déplaçant les éléments.

    Je voudrais le faire sans utiliser de boucles.


1 commentaires

Êtes-vous en train de déplacer le tableau entier à la gauche ou juste une partie de celui-ci?


3 Réponses :


8
votes

Je ne suis pas sûr de comprendre votre question, mais je pense que vous voulez dire ceci: xxx

qui insérera la variable (ou la matrice) newelem après la position POS dans le tableau A .

laissez-moi savoir si cela fonctionne pour vous!

[modifier] OK, on ​​dirait que vous voulez simplement utiliser la matrice comme registre de changement de vitesse. Vous pouvez le faire comme ceci: xxx

Ceci prendra tous les éléments du 2e au dernier au dernier de A et ajouté votre newelem < / code> variable (ou tableau) à la fin.


2 commentaires

Pour vous débarrasser du premier élément, vous devez avoir besoin [A (2: pos) ... .


@gnovice Je sais, la question n'était pas très difficile comme une phrase longue longue, David Heffernan corrigé. Voir ma réponse mise à jour.



6
votes

Le La fonction Crédit est une autre solution:

b = raccordement (A, décalage) code> transforme de la circulaire dans la matrice, A code>, par décalage code> éléments. Shiftsize sur CODE> est un vecteur de scalaires entier où l'élément N code> spécifie la quantité de décalage pour la n code> -th dimension du tableau A code>. Si un élément de défirsize code> est positif, les valeurs de A code> sont décalées (ou vers la droite). Si c'est négatif, les valeurs de A code> sont décalées (ou vers la gauche). S'il est 0, les valeurs de cette dimension ne sont pas décalées. P> BlockQuote>

Exemple: P>

Décalage circulaire de la première dimension des valeurs de 1 et deuxième dimension à gauche par 1. P>

A = [ 1 2 3;4 5 6; 7 8 9]

A =
    1     2     3
    4     5     6
    7     8     9

B = circshift(A,[1 -1]);
B  = 
    8     9     7
    2     3     1
    5     6     4


0 commentaires

1
votes

Simplement, supprimez la première valeur de la matrice et appendez le nouveau à la fin. XXX PRE>

Exemple numérique P>

A = [1 2 3 4];
A(1) = [];
A = [A 5];


0 commentaires