|
|
Daten aus .mat in cell speichern |
|
Duall777 |
Forum-Anfänger
|
|
Beiträge: 26
|
|
|
|
Anmeldedatum: 28.10.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.10.2013, 11:05
Titel: Daten aus .mat in cell speichern
|
|
Morgen an alle,
ich hbae vor kurzem angefangen mit matlab zu arbeiten und habe ein problem mit dem .mat-file.
Ich habe, mit einer Funktion, aus einer messungen mehrere Variablen mit deren werten eingelesen und habe das alles in einer .mat datei gespeichert. Jetz würde ich gern diese Daten in einem cell speichern um damit weiterzuarbeiten. Leider weis ich nicht wie die zuweisung funktioniert kann mir da jemand helfen?
ps: ich benutze Matlab 2013b falls das irgendwie weiterhilft
Grüße
Duall777
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 28.10.2013, 12:45
Titel:
|
|
Hallo,
wenn die Daten in der .mat-Datei nicht schon Cell Arrays sind, kann man sie nicht direkt als Cell Array einlesen. Üblicherweise werden die Daten als Struktur eingelesen:
Diese Struktur kann dann, falls nötig, mit struct2cell in ein Cell Array umgewandelt werden.
Grüße,
Harald
|
|
|
Duall777 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 26
|
|
|
|
Anmeldedatum: 28.10.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.10.2013, 13:57
Titel:
|
|
Vielen Dank für die schnelle Antwort,
ja hast recht die mat-datei wird als struct gespeichert. Das problem mit dem struct2cell ist aber das in dem struct der mat-datei auch die Variablennamen gespeichert sind, also eine spalte die Variablen und andere Spalte der dazugehörige wert (der ein Vektor ist da es mehrere werte sind).
Wenn ich den Befehl struct2cell nutze, dann erhalte ich aber eine cell nur mit den Vektoren der werte ohne die Variablennamen.
Kann man die auch irgendwie mitübernehmen?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 28.10.2013, 13:59
Titel:
|
|
Hallo,
mit fieldnames(data) bekommst du diese Namen zurück. Wie du sie dann weiterverarbeitest, ist dir überlassen.
Grüße,
Harald
|
|
|
Kascho |
Forum-Century
|
|
Beiträge: 195
|
|
|
|
Anmeldedatum: 24.03.10
|
|
|
|
Wohnort: Jena
|
|
|
|
Version: R2008b ... :(
|
|
|
|
|
|
Verfasst am: 28.10.2013, 14:03
Titel:
|
|
Hi,
Verstehe aber nicht so ganz den Sinn dahinter
*edit: da war der Harald schneller
Gruß, Kascho
|
|
|
Duall777 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 26
|
|
|
|
Anmeldedatum: 28.10.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.10.2013, 15:08
Titel:
|
|
Hi,
funktionert auch folgende zuweisung:
d = load('Datei.mat');
Daten{1}=d;
oder wird es da irgendwelche probleme geben?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 28.10.2013, 16:54
Titel:
|
|
Hallo,
dann hast du halt die gesamte Struktur in einer Zelle.
Funktionieren wird es, aber ob es zweckmäßig ist und das gewünschte liefert, ist eine andere Frage. Aber das kannst du ja auch selbst mal ausprobieren.
Grüße,
Harald
|
|
|
Duall777 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 26
|
|
|
|
Anmeldedatum: 28.10.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.10.2013, 18:04
Titel:
|
|
habs probiert genau das hab ich gebraucht vielen dank für die Hilfe.
da ist nur eine kleine sache
der befehl load('datei.dat'), denn wollte ich anstelle des Namens der Datei mit einer Variable, in der der datei name gespeichert ist, ausführen.
also ungefähr so:
a='datei.dat';
load(a);
Da kriege ich aber eine Fehlermeldung (etwas mit asci errinere mich nicht mehr an die genaue meldung) hab dann aufjedenfall mal bei google geschaut und da stand, dass im load-Befehl auf jedenfall der Name stehen muss.
Die Frage ist, kann man die variable irgendwie auf den Befehl anpassen oder gibt es einen ähnlichen Befel der mit Variablen funktioniert?
MfG
Dual777
|
|
|
Kascho |
Forum-Century
|
|
Beiträge: 195
|
|
|
|
Anmeldedatum: 24.03.10
|
|
|
|
Wohnort: Jena
|
|
|
|
Version: R2008b ... :(
|
|
|
|
|
|
Verfasst am: 28.10.2013, 18:52
Titel:
|
|
Das funktioniert auch mit einer Variablen. Hier musst du nur aufpassen das Pfad und Dateiname genau passt. Beliebte Fehlerquellen:
- dateiendung (.mat) vergessen
- filesep ("backslash") vergessen
Hierzu:
Falls du da noch etwas automatisieren möchtest:
Gruß, Kascho
|
|
|
Duall777 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 26
|
|
|
|
Anmeldedatum: 28.10.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.10.2013, 20:07
Titel:
|
|
Was meinst du mit pfad muss ich denn auch irgendwo angeben?
in meinem fall ist eine mit der endung .dat das ist kein problem oder?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 28.10.2013, 20:40
Titel:
|
|
Hallo,
load ist für .mat-Dateien gedacht.
.dat-Dateien sollten je nach Art und Inhalt anderweitig verarbeitet werden.
und
sind gleichbedeutend. Es ist also nicht vorstellbar, dass das eine funktioniert und das andere nicht.
Grüße,
Harald
|
|
|
Duall777 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 26
|
|
|
|
Anmeldedatum: 28.10.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.10.2013, 20:47
Titel:
|
|
also wie gesagt wenn ich
load('datei.dat');
eingebe funktioniert es über
a='datei.dat';
load(a);
kriege ich diese Fehlermeldung mit asci aber ich werde es morgen noch mal versuchen
wisst ihr mit welchem befehl .dat dateien laden kann?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 28.10.2013, 21:20
Titel:
|
|
Hallo,
es gibt nicht das eine .dat - Format. Da müsstest du schon mehr über Struktur der Datei verraten.
Generell:
Binärdateien --> fread
Textdateien --> textscan
Grüße,
Harald
|
|
|
Duall777 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 26
|
|
|
|
Anmeldedatum: 28.10.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.10.2013, 08:55
Titel:
|
|
Hi,
also das ist die genaue Fehlemeldung die kommt:
Error using load
Number of columns on line 2 of ASCII file BS-OW580_BGD3PK_LL_800hPa_111011.DAT must be the same as previous lines.
Error in Einlesen_in_Matlab (line 43) % das ist die funktion
d = load(Dateiname{i}); % Dateiname{i} ist die Variable in der der Name gespeichert ist, hat ne laufvariable weil auch mehrere Dateien eingelesen werden können, im momment ist es nur eine Datei
wenn load für .mat funktioniert könnte ich dann die datei in einer .mat-datei speichern und dann mit load öffnen?
zur struktur dort stehen mehrere hundert messgrössen dennen ein Vektor von werten zugewiesen ist, wobei jede komponente des Vektor den Wert der Messgröße zu einem anderen zeitpunkt darstellt
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 29.10.2013, 09:18
Titel:
|
|
Hallo,
die Fehlermeldung ist auf das Dateiformat bezogen. Es würde mich sehr verwundern, wenn du diese Fehlermeldung mit dem alternativen Aufruf nicht bekommst.
In einer .mat-Datei kann man Variablen abspeichern, nicht Dateien. Natürlich kannst du eine Datei einlesen und die Variablen, die daraus entstanden sind, dann in einer .mat-Datei ablegen.
Grüße,
Harald
|
|
|
|
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 - 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.
|
|