Extrahiere jedes Element außer jedem n-ten Element des Vektors

8

Gegeben ein Vektor

%Vor%

Ich möchte alle Elemente außer jedem n-ten extrahieren. Also, für n = 5 sollte meine Ausgabe

sein %Vor%

Ich weiß, dass Sie mit

auf jedes n-te Element zugreifen können %Vor%

aber ich brauche etwas wie den inversen Befehl. Wenn dies nicht existiert, würde ich über die Elemente iterieren und jeden n-ten Eintrag überspringen, aber das wäre der schmutzige Weg.

    
k1next 20.11.2012, 09:05
quelle

6 Antworten

13

Sie können Elemente wie folgt entfernen:

%Vor%     
HebeleHododo 20.11.2012, 09:13
quelle
4

Verwenden Sie eine Maske. Nehmen wir an, Sie haben

%Vor%

Dann

%Vor%

ist ein Vektor mit der gleichen Länge wie A , der die wiederholte Sequenz 0 1 2 3 4 enthält. Sie möchten alles von A bis auf die Elemente wo m == 4 , d. H.

%Vor%

führt zu

%Vor%     
Mehrwolf 20.11.2012 09:11
quelle
2

Oder Sie können die logische Indizierung verwenden:

%Vor%

Über den Befehl "Inversion", den Sie angegeben haben, ist es möglich, dieses Verhalten mithilfe der logischen Indexierung zu erreichen. Sie können den zu transformierenden Vektor für jede 1 in 0 und umgekehrt negieren.

Also, dieser Code wird jedes ABER das fünfte Element entfernen:

%Vor%     
Castilho 20.11.2012 09:28
quelle
1

Warum nicht so?

sag A ist dein Vektor

%Vor%

dann

%Vor%     
Vasco 05.02.2014 08:57
quelle
0

Eine mögliche Lösung für Ihr Problem ist die Funktion setdiff() .

In Ihrem speziellen Fall wäre die Lösung:

%Vor%

Wenn Sie alles auf einmal machen, können Sie beide zusätzlichen Variablen vermeiden:

%Vor%

Logische Indizierung ist jedoch eine schnellere Option als < a href="http://www.mathworks.com/matlabcentral/answers/41762-delete-row-from-matrix#answer_51471"> getestet :

%Vor%

Alle diese Codes setzen voraus, dass Sie die Variable n angegeben haben und sich an einen anderen Wert anpassen können.

    
bandrade 25.08.2015 23:34
quelle
0

Für die kürzeste Menge an Code warst du fast fertig. Wenn Sie Ihr bestehendes Array anpassen möchten, verwenden Sie:

%Vor%

Oder wenn Sie ein neues Array namens B wollen:

%Vor%     
Steve W 24.09.2015 09:30
quelle

Tags und Links