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

Variable wie in der Ausgabe wieder einlesen

 

disaster
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 25.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.09.2011, 01:56     Titel: Variable wie in der Ausgabe wieder einlesen
  Antworten mit Zitat      
Hallo,

der Threadtitel ist vielleicht bisschen komisch formuliert, aber mein Problem ist eigentlich recht simpel. Ich habe eine Reihe von textfiles, und in diesen Textfiles stehen eine Reihe von Variablen, wie sie von Matlab direkt ausgegeben werden. Also z.B:
Code:
anyValue =

  Columns 1 through 3

                  0.104992                  0.046332                  0.021754

  Columns 4 through 6

                    0.0123                  0.007634                  0.003634

  Columns 7 through 9

                  0.001224                  0.000568                   0.00027

  Column 10

                  0.000178


Ich möchte jetzt diese Variablen wieder einlesen, so dass sie wieder in nem Array mit anyValue gespeichert sind. Gibt es dafür ne vernüfntige Möglichkeit?

Mir ist durchaus bewusst, dass das Problem bereits in dem Format, wie die Daten gespeichert sind liegt. Leider habe ich da keinen Zugriff mehr drauf...

Danke für die Hilfe
Private Nachricht senden Benutzer-Profile anzeigen


Tox
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 26.08.08
Wohnort: ---
Version: R2010b
     Beitrag Verfasst am: 14.09.2011, 08:01     Titel:
  Antworten mit Zitat      
Du könntest noch eine Beispieldatei hochladen. Das würde anderen helfen, dir zu helfen. Wink
Code:

Vektor = importdata('C:\Dein_verzeichnis\Neues Textdokument.txt');
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.09.2011, 08:16     Titel:
  Antworten mit Zitat      
Hi,

Hier mal ein Beispiel, wie man da vorgehen könnte.
Funktioniert nur für eine Variable in der Textdatei, und nur wenn es ein ZeilenVektor ist und nur ... (gibt viele und nurs)...
Aber ich denke das Prinzip, wie man es machen kann wird klar.

Wenn es mehrere Variablen sind, ein Exponent vor den ganzen Zeilen steht, die Matrix mehr als eine Zeile hat, muss man entsprechen mehr Aufwand betreiben.



Code:

function readtest(filename)

fid=fopen(filename);


tline=fgetl(fid);
var_name=regexp(tline,'\w+','match');

tmp=[];
while 1
    tline=fgetl(fid);
    if ~ischar(tline), break, end
        if ~isempty(strfind(tline,'Column'))||strcmp(tline,''), continue, end
        tmp=[tmp,sscanf(tline,'%f')'];
   
end


fclose(fid);

assignin('base',var_name{:},tmp);


 
 
disaster
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 25.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.09.2011, 11:31     Titel:
  Antworten mit Zitat      
Danke schonmal an Gast, deine Möglichkeit funktioniert, wenn auch nur für eine Variable pro Datei. Trotzdem spart es mir so schon ne Menge Arbeit, bisher hab ich alles abgetippt -.-


@Tox: Hier mal eine Beispieldatei: Es sind nichts weiteres als mehrere Variablenoutputs hintereinander. Einzige "Besonderheit": Alle Variablen sind Vektoren der gleichen Größe

Code:
x =

  Columns 1 through 7

         0    0.5000    1.0000    1.5000    2.0000    2.5000    3.0000

  Columns 8 through 14

    3.5000    4.0000    4.0000    4.2000    4.4000    4.6000    4.8000

  Columns 15 through 21

    5.0000    5.2000    5.4000    5.6000    5.8000    6.0000    6.2000

  Columns 22 through 28

    6.4000    6.6000    6.8000    7.0000    7.0000    7.5000    8.0000

  Columns 29 through 32

    8.5000    9.0000    9.5000   10.0000


y1 =

  Columns 1 through 3

         0.231604938271605         0.215192901234568         0.196026234567901

  Columns 4 through 6

         0.175748456790123          0.14908950617284         0.120300925925926

  Columns 7 through 9

        0.0911188271604938        0.0526851851851852        0.0318287037037037

  Columns 10 through 12

        0.0318287037037037        0.0246604938271605        0.0192515432098765

  Columns 13 through 15

        0.0147067901234568        0.0103858024691358       0.00826388888888889

  Columns 16 through 18

       0.00467592592592593       0.00261574074074074      0.000941358024691358

  Columns 19 through 21

      0.000740740740740741       0.00029320987654321                         0

  Columns 22 through 24

                         0                         0                         0

  Columns 25 through 27

                         0                         0                         0

  Columns 28 through 30

                         0                         0                         0

  Columns 31 through 32

                         0                         0


y2 =

  Columns 1 through 3

          0.23587962962963          0.22224537037037         0.209837962962963

  Columns 4 through 6

         0.196836419753086          0.18366512345679         0.171720679012346

  Columns 7 through 9

         0.160192901234568         0.148742283950617         0.137638888888889

  Columns 10 through 12

         0.137638888888889         0.133680555555556         0.129675925925926

  Columns 13 through 15

         0.125748456790123         0.122106481481481         0.118101851851852

  Columns 16 through 18

         0.114158950617284         0.110648148148148         0.106828703703704

  Columns 19 through 21

         0.103503086419753         0.100138888888889        0.0970987654320988

  Columns 22 through 24

        0.0940663580246914        0.0911188271604938        0.0884259259259259

  Columns 25 through 27

        0.0857098765432099        0.0857098765432099        0.0786728395061728

  Columns 28 through 30

        0.0729089506172839        0.0667592592592593        0.0608179012345679

  Columns 31 through 32

        0.0561111111111111        0.0516666666666667
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.09.2011, 11:46     Titel:
  Antworten mit Zitat      
Hi,

das lässt sich auch noch recht leicht lösen:

Code:

function readtest(filename)
fid=fopen(filename);

var_name=[];
while 1
    tline=fgetl(fid);
    if strfind(tline,'=')
        if ~isempty(var_name)
            assignin('base',var_name{:},tmp);
        end
        var_name=regexp(tline,'\w+','match');
        tmp=[];
        continue;
    end
    if ~ischar(tline), break, end
        if ~isempty(strfind(tline,'Column'))||strcmp(tline,''), continue, end
    tmp=[tmp,sscanf(tline,'%f')'];
end
assignin('base',var_name{:},tmp);

fclose(fid);



 
 
disaster
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 25.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.09.2011, 11:53     Titel:
  Antworten mit Zitat      
Vielen Dank, Problem gelöst Smile
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.