|
|
Umwandlung einer Liste in einen Vektor/Matrix |
|
Gast_Ingo |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.09.2011, 12:40
Titel: Umwandlung einer Liste in einen Vektor/Matrix
|
|
|
|
|
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
|
|
Beiträge: 93
|
|
|
|
Anmeldedatum: 18.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.09.2011, 14:36
Titel:
|
|
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?
|
|
|
Gast_Ingo |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.09.2011, 15:08
Titel: list2vec
|
|
|
|
|
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.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|