WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Vektror zerlegen/ in Teilvektoren aufspalten

 

emmyriza
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 08.12.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.01.2017, 20:20     Titel: Vektror zerlegen/ in Teilvektoren aufspalten
  Antworten mit Zitat      
Hallo, ich habe eine Frage.Zwar habe einen langen Vektor, der vielen gleichen Elementen enthält. Nun wollte dass der vektoren in mehreren Vektoren aufgeteilt wird.
jeder teilvektor enthält die Elementen die gleich sind.
ein Bsp:
V =[1 1 1 1 1 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 4 4 4 4 4 4 5 5 5 5]
Die Teilvektoren sollen so aussehen
v1 = 1 1 1 1 1;
v2 =2 2 2 2 2 2 2 2 2
v3=3 3 3 3 3 3 3
v4= 4 4 4 4 4 4 4
....
kann man anhand von indizen machen. oder eine For schleife?
ich kriege es hin nicht!
kann mir jemand eine Idee geben. Ein Code wäre auch sehr wünschenwert!
Danke !
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 14.01.2017, 20:45     Titel: Re: Vektror zerlegen/ in Teilvektoren aufspalten
  Antworten mit Zitat      
Hallo emmyriza,

Es ist immer hilfreich für eine Antwort, wenn Du postest, was du bisgher versucht hast. Erstens ist es leichter Code zu verbessern, als ihn neu zu schreiben. Zweitens wird klarer, was Du erreichen willst. Und drittens kommt nicht der Eindruck auf, Du habest vielleicht einfach nur keine Lust gehabt, das Problem selbst zu lösen.

"v1", "v2", ... ist grundsätzlich eine schlechte Idee: Dabei werden Indizes in den Namen der Variablen versteckt. Das geht zwar per eval , aber das wirklich zu tun ist ein typischer Anfängerfehler. Deshalb wurde das hunderte Male hier im Forum diskutiert.
Besser wäre es, einen Index als Index zu verwenden, indem Du ein Cell-Array erstellst. Die Frage bleibt aber, wozu das nützlich ist, denn die Vektoren enthalten ja immer nur die gleichen Elemente. Dann wäre es doch effizienter, einfach nur ein Element zu speichern und die Anzahl die Wiederholungen. Das würde histcounts tun oder auch https://www.mathworks.com/matlabcen.....eexchange/41813-runlength.

Der Vollständigkeit halber aber mal ein Ansatz für einzelne Vektoren:
Code:
V =[1 1 1 1 1 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 4 4 4 4 4 4 5 5 5 5];
Elements = unique(V);
W = cell(1, numel(Elements));
for iW = 1:numel(Elements)
  W{iW} = repmat(Elements(iW), 1, sum(W == Elements(iW));
end

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
emmyriza
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 08.12.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2017, 11:30     Titel:
  Antworten mit Zitat      
Hallo Jan vielen Dank für die Antwort.
Eigentlich habe nur das gefragt weil ich ein Datensatz mit so viele Elementen.
Konkret habe 2 Eingänge als Ströme an die Maschine angelegt und einmal halte ein Wert Konstant bei einem Eingang und am andern Eingang änder.
Z.B
Werte am Eingang 1:
V_eingang1=[1 ,2, 3, 4 ,5]
Werte am Eingang 2:
V-eingan2= [1 2 3 4 5];
als ergebnis kommt so aus
V = [1 1;1 2;1 3;1 4;1 5];
daher entsteht diese Wiederholung.
Nun habe ein vektor V, den ich aufteilen soll. ich schneide die Bereich bei einem konstanten Wert. Die länge der Element pro konstanter Wert habe zum Glück hinbekommen und den Code von Harald verwendet:
Code:
% Das ist mein Programm.
V ; % der zuzerlegende Vektor
Vneu =(reshape(V, N,[]); % N ist die Anzahl der Elementen pro Abschnitt
 

es hat funktioniert!
Danke Dir nochmal
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.