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

Umwandlung einer Liste in einen Vektor/Matrix

 

Gast_Ingo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.09.2011, 13:40     Titel: Umwandlung einer Liste in einen Vektor/Matrix
  Antworten mit Zitat      
Hallo zusammen,

ich habe ein Problem mit dem Zugriff auf Daten in Scilab. Ich will Messdaten verarbeiten. Ich erzeuge mir (beispielsweise) eine Struktur in folgender Form:

for i=1:anzahl;
mo=int(strtod(nummer(zeile-1)));
messung(i)=struct('wert',mname(zeile-1),'messobjekt',mo);
zeile=zeile+1;
end;

Ich erhalte nun einen Vektor "messung" über eine Struktur. Will ich die 5. Messnummer haben, so schreibe ich beispielsweise:
m5=messung(5).messobjekt
Das funktioniert soweit.

Nun will ich in den Strukturelementen 'messobjekt' mit find suchen oder alle elemente plotten. whos liefert mir als Typ der Variablen messung.messobjekt "List". Es handelt sich also um eine Liste.
Schreibe ich a=messung.messobjekt ist auch a eine Liste. Plot(a) geht ebensowenig wie find (a==3).

Wie kann ich messung.messobjekt vom Typ Liste in einen Vektor umwandeln, auf den ich alle Funktionen anwenden kann, die mit Vektoren funktionieren? Ich habe bisher weder im Netz noch in der Hilfe etwas dazu gefunden.

Vielen Dank im Voraus

Ingo.


Kevin
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 18.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.09.2011, 15:36     Titel:
  Antworten mit Zitat      
Hallo,
tu mir mal nen Gefallen und sende den ganzen Code. Und schreib auch wie die Messdaten vorliegen (Format). Ich hab die Vermutung, dass du das Problem selbst erzeugst durch deinen (wie ich finde) überflüssigen struct.
Gruß
Kevin
_________________

1000 Buchstaben? Warum nur 6?
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast_Ingo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.09.2011, 16:08     Titel: list2vec
  Antworten mit Zitat      
Hallo Kevin,

erstmal Danke für Deine schnelle Antwort.
Zu meinem Problem:
Ich habe Messungen vorliegen von einer Anzahl Messobjekte. Für jedes Messobjekt gibt es Metadaten: sein Name, seine absolute Nummer, seine Masse, seine Dicht usw.
Jedes dieser Messobjekte ist mehrfach unter verschiedenen Bedingungen gemessen worden und hat dabei unterschiedliche viele Messwerte erzeugt.

Ich erzeuge nun von jeder Einzelmessung einen Struktureintrag, der aus den (allen messobjekten gemeinsamen) Metadaten und den Messwerten (jeweils Vektoren unterschiedlicher Länge) besteht.

Anschließend möchte ich mit möglichst schnellen Methoden in diesen Messwerten Messobjekte mit bestimmten Eigenschaften finden (dazu der find-Befehl) und deren Messwerte auswerten bzw. miteinander vergleichen.
Natürlich hätte ich auch alle Daten in Teile einer Matrix schreiben können. Aber dann kann ich immer nur den gleichen Datentyp verwenden (nicht Strings und Double mischen) und außerdem muss ich mir dann merken, welche Spalten welche Daten enthalten, die Matrix ist nicht slebsterklärend, wie das eine Struktur ist.

Ich habe inzwischen eine (genau genommen) 2 Lösungen für mein ursprüngliches Problem gefunden. Nach langer erfolgloser Suche habe ich gefunden, dass mit dem Befehl for i=listvariable;... end; der Laufvariablen i nacheinander jeder der Werte der Liste zugewiesen werden.
Somit ist folgende sehr schnelle Funktion entstanden:

function z=listtovec(liste);
clear b;b(1)=0;for i=liste;b(size(b,1)+1)=i;end;z=b(2:size(b,1));
endfunction;

Anschließend war mir der Name listtovec zu schlecht lesbar und ich beschloß ihn in list2vec umzubenennen. Und siehe da, die Funktion gibt es schon und sie tut genau, was ich wollte, somit ist mein Problem (zweimal) gelöst.

Viele Grüße

Ingo.
 
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.