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

Vektor an Werten ungleich 1 schneiden

 

lambda
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 14.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.04.2015, 11:22     Titel: Vektor an Werten ungleich 1 schneiden
  Antworten mit Zitat      
Hallo, ich bin leicht am Verzweifeln bei einem Matlab-Problem. Ich hoffe mir kann jemand helfen.

Ich habe eine Frage zum Aufteilen eines Vekors in mehrere kleinere Vektoren unterschiedlicher Länge.

Und zwar soll ein Vektor jeweils an den Stellen, die ungleich 1 sind getrennt werden und in jeweils neue kleinere Vektoren, die NUR aus 1 bestehen, geschrieben werden.
Die Zahlen ungleich 1 sind also nur die Trennstellen und sollen nicht in den kleineren Vektoren drinstehen.
Also Bsp:

A= [1 1 1 4 1 1 3 1 1 1 1]

soll in die drei Vektoren
z1= [1 1 1]

z2=[1 1]

z3=[1 1 1 1]

zerteilt werden.

Wichtig ist außerdem, dass das ganze allgemein für einen Vektor beliebiger Länge funktionieren soll. Die 1en sind dabei immer nur durch eine einzige Zahl ungleich 1 getrennt.

Ich hoffe sehr mir kann hierbei jemand weiterhelfen.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 14.04.2015, 12:03     Titel:
  Antworten mit Zitat      
was hast du denn bis jetzt versucht? mit einer forschleife ist das sehr leicht umzusetzen. wenn man das noch mit find kombiniert geht das relativ fix.
du solltest allerdings nicht einen index im variablen namen verstecken. ein cell array wäre hier einfacher zu verwenden.
grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
lambda
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 14.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.04.2015, 12:56     Titel:
  Antworten mit Zitat      
Danke schonmal für die Antwort. Die Idee mit dem find habe ich auch. Mir ist allerdings durch meine geringe Matlab-Kenntnis nicht genau klar, wie ich diese verschiedenen Vektoren dann erstelle...
Private Nachricht senden Benutzer-Profile anzeigen
 
lambda
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 14.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.04.2015, 14:02     Titel:
  Antworten mit Zitat      
kann mir vielleicht jemand zu dem Thema helfen. Ich weiß nicht genau wie das mit einer for-Schleife oder auch anders hinbekomme.
Danke schonmal. :)
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 14.04.2015, 14:13     Titel:
  Antworten mit Zitat      
http://de.mathworks.com/help/matlab/language-fundamentals.html
http://de.mathworks.com/help/matlab......html?searchHighlight=for
http://de.mathworks.com/help/matlab.....html?searchHighlight=find
http://de.mathworks.com/help/matlab.....hat-meet-a-condition.html
http://de.mathworks.com/help/matlab...../create-a-cell-array.html
http://de.mathworks.com/help/matlab.....data-in-a-cell-array.html
die dokumentation von matlab ist sehr gut. grade als anfänger sollte man sich die zeit nehmen sich da ordentlich einzuarbeiten. das erspaart später viel arbeit.
wenn du nicht weiter kommst poste was du versucht hast und welche fehler auftreten. wie weicht das ergebniss vom erwarteten ab?
_________________

richtig Fragen
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: 16.04.2015, 13:58     Titel: Re: Vektor an Werten ungleich 1 schneiden
  Antworten mit Zitat      
Hallo lambda,

z1, z2, z3 als Ausgabe ist extrem unpraktisch. Hier wird ja ein Index im Namen der Variablen "versteckt" und es ist sehr mühselig später wieder darauf zuzugreifen. Ein Cell-Array ist besser.
Ein Cell-Array, das nur Vektoren enthält, deren Elemente alle 1 sind, ist allerdings eine merkwürdige Art Daten zu speichern. Den gleichen Inhalt hätte man auch mit einem Vektor, der die Länge die einzelnen Vektoren enthielte. Diese liesse sich auch sehr einfach programmieren:
Code:
Index = find(A ~= 1)
Result = [Index(1), diff(A)] - 1;


Was soll geschehen, wenn eine Nicht-1 als erstes oder letztes Element auftaucht?

Gruß, Jan
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 - 2025 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.