|
|
|
Semesterarbeit+Matlab=Hilfe |
|
| blabla25 |

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 28.11.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.11.2010, 21:39
Titel: Semesterarbeit+Matlab=Hilfe
|
 |
| |
 |
|
Hallo,
vorweg: Ich arbeite das erste mal mit Matlab.
Versuche mich schon seit einigen Tagen daran meine Probleme zu lösen, komme aber irgendwie auch nicht mehr weiter und hoffe das ihr mich tatkräftig unterstützt.
Bis jetzt kann ich wirklich nur die Grundzüge in Matlab... Wenn ich jetzt die ganzen Bücher durchlesen müsste die ich mir besorgt habe, würde ich wohl nicht mehr reichtzeitig fertig werden, daher bitte ich euch um Hilfe.
Ich habe folgende Probleme und wenn ihr mir schon bei einem helfen könntet, wäre es schon super.
- Einlesen von Datenreihen: Ich habe Messreihen die im csv-Format vorliegen. Insgesamt 50 Messreihen, daher auch 50 Dateien. Mit dem Import Wizard kann ich aber irgendwie nur eine Datei einlesen. Bei mehr als 5 meldet Matlab mir ne Fehlermeldung. Also konkret: Wie importiere ich 50 Messreihen gleichzeitig und zwar so, das Matlab mir auch 50 Matrizen erzeugt?
- Dann würde ich gerne aus den erstellten Matrizen den Mittelwert berechnen und zwar folgendermaßen: Matlab soll den Mittelwert aus den jeweiligen ersten Werten der ersten Spalte der einzelnen Matrizen bilden und diesen in einer neuen Matrix in Zeile 1, Spalte 1 ausgeben. Im Endeffekt die Mittelwerte der einzelnen Zahlen von 50 Matrizen.
Mit dem Befehl mean komme ich irgendwie nicht weit, weil ich einfach nicht herausfinden kann, wie ich Matlab mitteile das es den Mittelwert aus mehreren Matrizen berechnen soll.
Bisher habe ich mich nur mit dem Plotten der Datenreihen befasst und das klappt schon ganz gut. Auch Grundzüge wie Variablen deklarieren beherrsche ich schon, aber das reicht ja bei weitem nicht aus.
Also, über Hilfe wäre ich sehr dankbar.
Grüße
|
|
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 28.11.2010, 21:57
Titel: Re: Semesterarbeit+Matlab=Hilfe
|
 |
Hallo blabla25,
Herzlich willkommen bei Matlab!
| Zitat: |
| Mit dem Import Wizard kann ich aber irgendwie nur eine Datei einlesen. Bei mehr als 5 meldet Matlab mir ne Fehlermeldung. |
Das verstehe ich nicht. "Nur eine" oder "mehr als 5" klingt nicht konsistent.
Welche Fehlermeldung zeigt Dir Matlab denn an? Matlab's Fehlermeldungen sind sehr gut und sie beinhalten wertvolle Informationen, die beim Lösen der Probleme helfen.
Den Rest der Probleme können wir viel besser verstehen, wenn Du Dein erstelltes Programm postest. Ansonsten bleiben die Fragen zu allgemein.
Gruß, Jan
|
|
|
|
| blabla25 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 28.11.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.11.2010, 22:06
Titel:
|
 |
Hallo Jan,
ich hab für heute erstmal Feierabend gemacht. Morgen geht es dann weiter. Nur so weit zum Import Wizard.
Ich will ja 50 Dateien einlesen. Leider kann man pro Import nur eine Datei auswählen. Also ich kann gar nicht mehrere gleichzeitig markieren. Daher habe ich es bisher so gemacht, das ich den Wizard mehrmals gestartet habe und jeweils nur eine Datei eingelesen habe. Und irgendwann zwischen 2 und 5 eingelesen Dateien gab es dann ne Fehlermeldung. Die kann ich sicherlich morgen reproduzieren und werde sie dann posten.
Programmcode? Bisher habe ich nicht wirklich einen, weil ich mir alle Befehle die ich gebraucht habe, notiert habe... Man merkt also ich bin absoluter Amateur.
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 28.11.2010, 22:29
Titel:
|
 |
Hallo blabla25,
Du kannst CSV-Datein auch einfach mit CSVREAD lesen lassen.
Es lohnt sich sehr, kleine Scripts, oder besser gleich Functions zu schreiben, weil man dann das Programm Stück für Stück erweitern kann, ohne jedesmal von vorne beginnen zu müssen.
Gruß, Jan
|
|
|
|
| blabla25 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 28.11.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 29.11.2010, 17:04
Titel:
|
 |
Also, ich hab mich jetzt mal an dem einlesen der Dateien probiert. Also eine einzelne schaffe ich.
Und zwar gebe ich dazu folgenden Befehl ein:
n=csvread('tek0000all.csv', 15)
Damit erzeugt er mir eine Matrix. Die 15, weil er erst ab der 15ten Zeile einlesen soll. Bis hierher klappt das ganz gut.
Jetzt hätte ich gerne das er mir 50 Datensätze einliest. Dabei sollen 50 Matrizen entstehen. Also z.b. n1=...., n2=....
Das Problem: Im Dateiname erhöht sich die vierstellige Zahl auch immer um 1.
Ich hab mir da folgendes Konstrukt ausgedacht und vllt könnt ihr mir sagen, wo mein Fehler liegt und wie ich es anders angehen kann.
Das Problem ist aber der Dateiname.... Da erhöhen sich ja die letzten beiden Stellen.
Ich hoffe ihr hab verstanden worauf ich hinaus will und danke euch schon mal für eure Hilfe.
|
|
|
|
| blabla25 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 28.11.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 29.11.2010, 17:15
Titel:
|
 |
|
Das gleiche mit einem Platzhalter a la tek*.csv funktioniert auch nicht...
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 29.11.2010, 20:45
Titel:
|
 |
Hallo blabla25,
| Zitat: |
| Jetzt hätte ich gerne das er mir 50 Datensätze einliest. Dabei sollen 50 Matrizen entstehen. Also z.b. n1=...., n2=.... |
Dann wirst Du später wieder Schwierigkeiten haben auf die einzelnen Variabelen zuzugreifen! Statt einen Index in den Namen der Variablen zu packen, empfehle ich (täglich in diesem Forum :-) ), eine Index als Index zu verwenden, also n{1}, n{2}, ... Dann kann man z.B. später die Anzahl der Files verändern, ohne das Programm manuell ändern zu müssen!
Hilft das weiter?
Gruß, Jan
|
|
|
|
| blabla25 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 28.11.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.12.2010, 11:46
Titel:
|
 |
Leider funktioniert das auch nicht...
Hier mal die Fehlermeldung:
??? Error using ==> dlmread at 145
Mismatch between file and format string.
Trouble reading number from file (row 1, field 2) ==> ;0.03
Error in ==> csvread at 52
m=dlmread(filename, ',', r, c);
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 01.12.2010, 12:02
Titel:
|
 |
Hallo blabla25,
| Zitat: |
??? Error using ==> dlmread at 145
Mismatch between file and format string.
Trouble reading number from file (row 1, field 2) ==> ;0.03
Error in ==> csvread at 52
m=dlmread(filename, ',', r, c); |
[/quote]
Nun. ";0.03" enthält ja immerhin ein Semikolon. Das hat in einem CSV-File nichts zu suchen: "Comma-Separated-Values" ist halt nicht gleich "Semikolon-Separated-Values".
In welchem Format liegen Deine Messreiehn nun vor?!
Gruß, Jan
|
|
|
|
| blabla25 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 28.11.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.12.2010, 12:20
Titel:
|
 |
Also die Daten liegen wirklich im CSV Format vor. Hab eben auch mal die erste mit dem Texteditor geöffnet und finde auch kein Semikolon...
Mir ist auch noch aufgefallen, das es ja insgesamt 51 Dateien sind. Die Zahlen im Dateinamen beginnen ja bei 00 und hören bei 50 auf.
Deswegen habe ich nFile=51 gesetzt.
Jetzt kommt als Fehlermeldung:
??? Error using ==> csvread at 38
File not found.
Heißt die 38 hier die 38igste Datei? Aber er beginnt noch nicht mal mit dem einlesen der ersten Dateien... Also die Cell ist noch komplett leer.
|
|
|
|
| denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 01.12.2010, 12:43
Titel:
|
 |
| blabla25 hat Folgendes geschrieben: |
Jetzt kommt als Fehlermeldung:
??? Error using ==> csvread at 38
File not found.
Heißt die 38 hier die 38igste Datei? Aber er beginnt noch nicht mal mit dem einlesen der ersten Dateien... Also die Cell ist noch komplett leer. |
Nein es heißt,dass CSVREAD Fehlermeldung in der Zeile 38 geworfen hat.
Füge doch ein Status-Text Ausgabe ein, um rauszufinden, welche Datei Fehler verursacht
|
|
|
|
| blabla25 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 28.11.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.12.2010, 12:47
Titel:
|
 |
Ja, das Problem das er die Datei nicht finden konnte habe ich jetzt gelöst. Hab Matlab neu gestartet und vergessen ihm zu sagen im welchen Ordner er suchen soll...
Jetzt taucht der Fehler von vorhin wieder auf...
Und ich hab mir jetzt eben die CSV Files angeschaut. Und die Werte werden durch ein ; vonaneinder getrennt.
also im csv-File liegen sie so vor:
000.3;3.4;0.02
Da wird jetzt wahrscheinlich der Fehler liegen, oder?
Edit: So liegen sie in der ersten Datei vor, bei den nachfolgenden sind die Zahlen durch ein , getrennt.
Ich muss da wohl was mit Excel o.ä. geändert haben...
|
|
|
|
| blabla25 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 28.11.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.12.2010, 12:53
Titel:
|
 |
Wow, es läuft.... Die erste Hürde ist also geschafft. Vielen Dank erst mal soweit!
Ich versuch dann mal weiter zu kommen... Werde mich aber sicherlich hier wieder zu Wort melden und würde mich freuen, wenn ihr mir weiterhin so hilfreich zur Seite steht.
Beste Grüße
|
|
|
|
| blabla25 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 28.11.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.12.2010, 15:17
Titel:
|
 |
| |
 |
|
So, nächste Frage:
Ich möchte nun eine einzelne Messreihe aus der Cell plotten. Dazu verwende ich folgenden Befehl:
plotyy(n{1,1} (:,1), n{1,1} (:,2), n{1,1} (:,1), n{1,1} (:,3))
Dabei enthält die erste Spalte einer Cell die Zeit, und die zweite und dritte jeweils die Messwerte zu eben dem zugehörigen Zeitpunkt.
Plotten funktioniert mit dem Befehl einwandfrei.
Auch die X-Achsen Beschriftung kriege ich mit xLabel hin.
Nur hätte ich jetzt gerne folgendes:
Die X-Achse (Zeitachse) ist zu eng beianeinder. Ich würde sie gerne etwas strecken, der Plot soll breiter werden.
Und das beschriften der y-Achse funktioniert nur auf der linken Seite. Wie beschrifte ich die rechte Seite?
Der nächste Schritt wäre dann für mich den Mittelwert über die Messreihe zu bilden:
Ich hab 50 Messreihen. Zu jeder Messreihe gehören 10.000 Werte. Ich würde nun gerne den Mittelwert des ersten Messwertes aus Messreihe 1-50 bilden. Dann aus dem 2ten usw.
Dies kann ich nur mit einer for -schleife lösen, oder? Und funktioniert das mit der Funktion mean? Weil die berechnet mir bisher nur den Mittelwert einer Messreihe über die Zeit, was ich ja nicht möchte.
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 02.12.2010, 14:41
Titel:
|
 |
Hallo blabla25,
| Zitat: |
| Die X-Achse (Zeitachse) ist zu eng beianeinder. Ich würde sie gerne etwas strecken, der Plot soll breiter werden. |
Das ist nicht klar. Soll die Figure breiter werden, die AXES, oder die Limits der X-Werte? Für letzteres siehe XLIM.
| Zitat: |
| Und das beschriften der y-Achse funktioniert nur auf der linken Seite. Wie beschrifte ich die rechte Seite? |
Siehe "doc plotyy".
Das lesen der Hilfe-Texte ist immer hilfreich, wenn man nach Antworten sucht:
| Zitat: |
Der nächste Schritt wäre dann für mich den Mittelwert über die Messreihe zu bilden:
Ich hab 50 Messreihen. Zu jeder Messreihe gehören 10.000 Werte. |
Du könntest MEAN verwenden, wenn die Daten als Array vorlägen. Wenn ich es richtig verstehe, sind die einzelnen Messreihen aber in Cells gespeichert. Dann könntest Du sie ja in ein Array kopieren:
Nun solltest Du per MEAN Deine Lösung finden können.
Gruß, Jan
|
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
|
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.
|
|