|
|
aus importierten Daten einen neuen Vektor erzeugen |
|
Calgar |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.03.2010, 23:24
Titel: aus importierten Daten einen neuen Vektor erzeugen
|
 |
|
 |
|
Hallo zusammen,
Ich bin (wie so oft vermutlich) ein Matlab-Neuling und sitze an einem Projekt. Bisher konnte ich mich ganz gut durch Simulink und Matlab beißen, jetzt aber muss ich euch fragen.
mittels uiimport, importiere ich Daten aus einem Excelfile. Das File hat 4 Spalten und 3458 Zeilen. In der ersten Spalte steht die Zeit die in Excel über die Formel (A3-1120369)/1000 in Sekunden umgerechnet wird. Dabei ist A3 eben in jeder Zeile +1, A4, A5, A6 - Aende der Exceltabelle.
Nun soll diese Umrechnung nicht in Excel sondern in Matlab oder Simulink (was eben einfacher ist) gemacht werden.
Mein Ansatz war bisher:
w = input('Geben Sie die Anzahl der Datensätze ein: ');
for i=3:w;
t=(data(i,1)-data(2,1))/1000;
i=i+1;
end
W=Anzahl der Zeilen, muss in diesem Fall der User wissen...
Da die Werte in der Exceltabelle erst in Zeile 3 beginnen läuft i von 3 - w. Die Variable t soll dann eigentlich der Vektor werden der für alle Zeilen der Exceltabelle die neu berechnete Zeit enthält. Jedoch ist t nur eine Variable mit einem Wert. Wie bringe ich Matlab bei das t ein Vektor sein soll (Länge i - w) der mit den neuen Werten gefüllt wird?
Ist es möglich die Länge der Exceltabelle automatisch bestimmen zu lassen, ohne die vorherige Abfrage und Eingabe von w? Das funktioniert zwar auch, aber ist eigentlich getrickst und eher unschön...
Ich hoffe Ihr könnt mir helfen und mein "Problem" ist klar geworden.
Vielen Dank
|
|
|
|
|
InspectorGadget |

Forum-Fortgeschrittener
|
 |
Beiträge: 52
|
 |
|
 |
Anmeldedatum: 16.02.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.03.2010, 00:13
Titel:
|
 |
Hi!!
Ist data die Variable, in der die importierten Daten stehen? Dann geht das nämlich auch schöner:
Zuerst verschieben wir die Infos in data um 3 nach links, so dass der erste Eintrag auch dem ersten "echten" Eintrag aus Excel entspricht.
Dann gibt es eine Funktion, die genau das macht, was Du mit der Schleife gelöst hast:
Damit erhältst Du das gewünschte t.
Noch ein paar Tipps:
In Matlab sehen for-Schleifen nicht so aus, wie bei Dir. Richtig wäre:
Der for Befehl braucht keinen ";" . Die Iterationsweite wird mit dem mittleren Argument bestimmt. for a=x:y:z bedeutet von x bis z mit dem Zählschritt y. Wenn y=1 kann man das weglassen, das macht Matlab automatisch.
Viel Spass und Erfolg weiterhin!!!!
|
|
|
InspectorGadget |

Forum-Fortgeschrittener
|
 |
Beiträge: 52
|
 |
|
 |
Anmeldedatum: 16.02.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.03.2010, 00:18
Titel:
|
 |
Ach so, falls Du wieder mal einen Vektor etc. in einer Schleife erstellen willst:
Matlab ist schneller, wenn Variablen, die in Schleifen wachsen, schon vorher mit ihrer finalen Grösse bekannt sind. Darauf macht es Dich aber beim schriebn aufmerksam. Deswegen den Vektor t zuerst anlegen, und dann mit Daten füllen.
Noch eine Kleinigkeit am Rande: i und j sind in Matlab imaginäre Zahlen. Also besser nicht als Zählvariable benutzen
|
|
|
Calgar |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.03.2010, 09:44
Titel:
|
 |
Hi,
Das funktioniert ja prima. Vielen Dank!
Gibts noch die Möglichkeit das Matlab die Anzahl der Zeilen automatisch erkennt? Aktuell frage ich ja die Anzahl ab und speicher sie als Variable. Schöner wärs wenn Matlab automatisch die Anzahl Zeilen erkennt und ich damit dann die for-schleife laufen lassen kann.
|
|
|
Jan* |

Forum-Century
|
 |
Beiträge: 178
|
 |
|
 |
Anmeldedatum: 06.11.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2007b
|
 |
|
|
 |
|
Verfasst am: 09.03.2010, 09:52
Titel:
|
 |
Hi,
wenn es um die Größenbestimmung von Arrays geht sind length, size und numel die Befehle deines Vertrauens:
Gruß Jan
|
|
|
Calgar |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.03.2010, 17:43
Titel:
|
 |
super, eure Antworten sind echt hilfreich
Danke!
|
|
|
|
|
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 - 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.
|
|