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

aus .mat - File die Zahlenwerte entnehmen

 

NNLab
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 59
Anmeldedatum: 11.10.11
Wohnort: Frankfurt am Main
Version: 7.12.0
     Beitrag Verfasst am: 18.04.2012, 13:52     Titel: aus .mat - File die Zahlenwerte entnehmen
  Antworten mit Zitat      
Hallo Freunde,

ich habe eine .mat - File die besteht aus mehreren Daten, und ist in etwa wie folgt aufgebaut:

diagonale 1x1 8 double
hoehe 1x1 8 double
laenge 1x1 8 double
breite 1x1 8 double
usw. 1x1 8 double
usw. 1x1 8 double

Was ich aus diese .mat File brauche sind nur die Zahlenwert, die würde ich gerne in einen Vektor schreiben.

Habt ihr eine Idee, wie ich das machen kann?
Private Nachricht senden Benutzer-Profile anzeigen


Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 18.04.2012, 15:06     Titel:
  Antworten mit Zitat      
Klar:
Code:
variablen=whos;
for (i=1: ...)
Vektor(i)=eval(variablen(i).Name);
 

_________________

Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 18.04.2012, 15:20     Titel:
  Antworten mit Zitat      
Hallo

besser ist in eine Variable die Mat-File-Variablen zu laden
und dann mit structfun zu einem Vektor binden.
Code:

X =  load('dein_matfile.mat')
M = structfun(@(s)[s],X)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
NNLab
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 59
Anmeldedatum: 11.10.11
Wohnort: Frankfurt am Main
Version: 7.12.0
     Beitrag Verfasst am: 19.04.2012, 12:46     Titel:
  Antworten mit Zitat      
Hi denny, hat wunderbar funktioniert.

Dank Euch!!!
Private Nachricht senden Benutzer-Profile anzeigen
 
NNLab
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 59
Anmeldedatum: 11.10.11
Wohnort: Frankfurt am Main
Version: 7.12.0
     Beitrag Verfasst am: 01.06.2012, 12:42     Titel:
  Antworten mit Zitat      
Hallo Leute,

habe noch eine Frage diesbezüglich.
Und zwar will ich nun nicht die mat-File mit den Variablen laden und daraus ein Vektor bilden,
nun will ich den Vektor direkt aus dem Workspace bilden.
Im Workspce befinden sich mehrere Variablen, die wie schon vorher beschrieben, aufgebaut sind:

diagonale 1x1 8 double
hoehe 1x1 8 double
laenge 1x1 8 double
breite 1x1 8 double
usw. 1x1 8 double
usw. 1x1 8 double

Oder anders erklärt:
In der m-File wo die ganzen Berechnungen beschrieben sind,
will ich nun die Funktion reinschreiben, die mir aus den ganzen Variablen die Werte entnimmt und die in einen Vektor schreibt.

Hoffe ihr könnt mir noch mal helfen!

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 01.06.2012, 13:05     Titel:
  Antworten mit Zitat      
Hallo

dann musst du vorgehen, wie Andy oben das bereits beschrieben hat
Private Nachricht senden Benutzer-Profile anzeigen
 
NNLab
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 59
Anmeldedatum: 11.10.11
Wohnort: Frankfurt am Main
Version: 7.12.0
     Beitrag Verfasst am: 01.06.2012, 13:53     Titel:
  Antworten mit Zitat      
Ja habe mir schon gedacht das Andys Code in die Richtung geht die ich will, nur klappt es noch nicht so ganz.


Wenn ich den Code:
Code:
variablen=whos;
for i=1:82
Vektor(i)=eval(variablen(i).Name);
end

benutze, spuckt mir Matlab die Meldung raus: Reference to non-existent field 'Name'.

Ausserdem habe ich das Probelm das in der struct 'variablen' auch das 'i' aus der Schleife aufgenommen wird.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 01.06.2012, 15:03     Titel:
  Antworten mit Zitat      
Hallo
Name muss klein geschrieben werden
i sollte anhand obiges Beispiels nicht auftauchen, es sei denn du hast den Script wiederholt aufgerufen hast. Oder du hast an anderen Stelle ein i definiert

Code:

variablen=whos;
for i=1:length(variablen)
  Vektor(i)=eval(variablen(i).name);
end
 


du kannst mit WHOS auch z.B die Variablen mit bestimmten Buchstaben auswählen
Code:

% alle Variablen, die mit groß A beginnen:
whos('A*')
 
Private Nachricht senden Benutzer-Profile anzeigen
 
NNLab
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 59
Anmeldedatum: 11.10.11
Wohnort: Frankfurt am Main
Version: 7.12.0
     Beitrag Verfasst am: 01.06.2012, 15:51     Titel:
  Antworten mit Zitat      
Wow Super,

hat wiedermal wunderbar geklappt, und wie immer lag der Teufel im Detail Very Happy

DANKE!
Private Nachricht senden Benutzer-Profile anzeigen
 
NNLab
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 59
Anmeldedatum: 11.10.11
Wohnort: Frankfurt am Main
Version: 7.12.0
     Beitrag Verfasst am: 08.06.2012, 19:13     Titel:
  Antworten mit Zitat      
Hallo Leute,

weil es doch so Super mit euch klappt, habe ich doch gleich noch eine Frage.

Code:
variablen=whos;
for i=1:length(variablen)
Vektor(i)=eval(variablen(i).name);
end


Gibt es hier eine Möglichkeit alle Variablen mit der size 1x1 aufzunehmen?
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 11.06.2012, 12:06     Titel:
  Antworten mit Zitat      
Hallo
Meinst du so?

Code:

variablen=whos;

for i=1:length(variablen)
   if variablen(i).size(1)==1 && variablen(i).size(2)==1
      Vektor(i)=eval(variablen(i).name);
   end
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
NNLab
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 59
Anmeldedatum: 11.10.11
Wohnort: Frankfurt am Main
Version: 7.12.0
     Beitrag Verfasst am: 11.06.2012, 14:26     Titel:
  Antworten mit Zitat      
Hi denny,

es hat wiedermal wunderbar geklappt.

Ich habe nun in meinen Code weiter 'rumgepfuscht' so das ich jetzt einige Veränderungen habe in der Anzahl der variablen.

Und zwar ist es jetzt wie folgt aufgebaut:


diagonale_1_messung
diagonale_2_messung
diagonale_3_messung
usw...
breite_1_messung
breite_2_messung
breite_3_messung
usw...
laenge_1_messung
laenge_2_messung
laenge_3_messung
usw...

So in der Art wird es jetzt im Workspace angelegt.
Wie stelle ich das nun an das ich alle Variablen mit ihren fortlaufenden Indizes in eine jeweilige Zeile schreibe?
Private Nachricht senden Benutzer-Profile anzeigen
 
NNLab
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 59
Anmeldedatum: 11.10.11
Wohnort: Frankfurt am Main
Version: 7.12.0
     Beitrag Verfasst am: 11.06.2012, 17:17     Titel:
  Antworten mit Zitat      
Hi denny,

hab es gelöst:

Code:
for s = 1:5
    num = sprintf('*_%d_*',s);
    variablen=whos(num);                                                   % 'whos' listet alle Variablen aus dem Workspace auf        
    for i=1:length(variablen)
        if variablen(i).size(1)==1 && variablen(i).size(2)==1                   % Nur Variablen mit der Size 1x1 werden geladen
            MV(s,i)=eval(variablen(i).name);                                    % Merkmalsmatrix
        end
    end
end


Danke

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



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 - 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.