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

Daten aus .mat in cell speichern

 

Duall777
Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 28.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.10.2013, 11:05     Titel: Daten aus .mat in cell speichern
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.10.2013, 12:45     Titel:
  Antworten mit Zitat      
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:
Code:
data = load('daten.mat');

Diese Struktur kann dann, falls nötig, mit struct2cell in ein Cell Array umgewandelt werden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Duall777
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 28.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.10.2013, 13:57     Titel:
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.10.2013, 13:59     Titel:
  Antworten mit Zitat      
Hallo,

mit fieldnames(data) bekommst du diese Namen zurück. Wie du sie dann weiterverarbeitest, ist dir überlassen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Kascho
Forum-Century

Forum-Century


Beiträge: 195
Anmeldedatum: 24.03.10
Wohnort: Jena
Version: R2008b ... :(
     Beitrag Verfasst am: 28.10.2013, 14:03     Titel:
  Antworten mit Zitat      
Hi,

Code:


Verstehe aber nicht so ganz den Sinn dahinter Wink

*edit: da war der Harald schneller Wink

Gruß, Kascho
Private Nachricht senden Benutzer-Profile anzeigen
 
Duall777
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 28.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.10.2013, 15:08     Titel:
  Antworten mit Zitat      
Hi,

funktionert auch folgende zuweisung:

d = load('Datei.mat');
Daten{1}=d;

oder wird es da irgendwelche probleme geben?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.10.2013, 16:54     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Duall777
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 28.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.10.2013, 18:04     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Kascho
Forum-Century

Forum-Century


Beiträge: 195
Anmeldedatum: 24.03.10
Wohnort: Jena
Version: R2008b ... :(
     Beitrag Verfasst am: 28.10.2013, 18:52     Titel:
  Antworten mit Zitat      
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:
Code:


Falls du da noch etwas automatisieren möchtest:

Code:


Gruß, Kascho
Private Nachricht senden Benutzer-Profile anzeigen
 
Duall777
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 28.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.10.2013, 20:07     Titel:
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.10.2013, 20:40     Titel:
  Antworten mit Zitat      
Hallo,

load ist für .mat-Dateien gedacht.
.dat-Dateien sollten je nach Art und Inhalt anderweitig verarbeitet werden.

Code:
dateiname = 'daten.mat';
load(dateiname)

und
Code:
load('daten.mat')

sind gleichbedeutend. Es ist also nicht vorstellbar, dass das eine funktioniert und das andere nicht.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Duall777
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 28.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.10.2013, 20:47     Titel:
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.10.2013, 21:20     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Duall777
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 28.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2013, 08:55     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.10.2013, 09:18     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.