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

MATLAB DATEN EINLESEN!!!

 

jannis94
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 13.01.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.01.2019, 14:30     Titel: MATLAB DATEN EINLESEN!!!
  Antworten mit Zitat      
Hallo,
ich bin neu hier und habe ein kleines Problem mit dem Einlesen von txt-Dateien. Ich wollte mir gerne eine Matrix C erstellen, um im Späteren die Messdaten auswerten zu können. Nur leider liest das Programm nur eine statt beispielsweise 5 Dateien in die MAtrix ein und spuckt danach ein Fehler aus. Ich hab jetzt tagelang rumprobiert und nichts hat geholfe, also für jeden RAtschlag bin ichsehr dankbar.

Falls es hilfreich sein sollte hier sind die ersten zwei zeilen einer Textdatei

Kraft_N Weg_mm Durchbiegung_mm Biegespannung_MPa WORD[0] WORD[1] WORD[2] WORD[3]
0.565024 0.000159 0.000159 0.048925 0 64 0 0


Hier mein bisheriges Skript zum Einlesen der Datei


Code:
clear all
close all
fPath = 'C:\Users\...';
files = dir(fullfile(fPath,'*.txt'));
dNames = {files.name};

for i = 1:length(dNames) % Aufrufen der i-ten Datei
    fileID = fopen([fPath filesep dNames{i}]);%Datei-i öffnen
    C = textscan(fileID,'%f %f %f %f %f %f %f %f','HeaderLines',1);
    fclose(fileID);
    Kraft(:,i)         = C{:,1};            
    Weg(:,i)           = C{:,2};
    Durchbiegung(:,i)  = C{:,3};
    Biegespannung(:,i) = C{:,4};    
    Word[0](:,i)         = C{:,5};            
    Word[1](:,i)           = C{:,6};
    Word[1](:,i)  = C{:,7};
    Word[1](:,i) = C{:,8};
end

Vielen Dank schonmal im voraus für eure Bemühungen

[EDITED, Jan, Bitte Code-Formattierung verwenden - Danke!]
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: 13.01.2019, 15:05     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
spuckt danach ein Fehler aus

Ja, und was ist die Fehlermeldung?

Word[...] ist keine gültige MATLAB-Syntax, zudem beginnt Indizierung in MATLAB bei 1. Wenn du ein weiteres Cell Array erstellen willst, dann Word{1} etc.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
jannis94
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 13.01.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.01.2019, 17:04     Titel:
  Antworten mit Zitat      
Hallo Harald, ich habe dir im Anhang mal zwei Screenshots mit eingeladen, einer von der Fehlermeldung und einer von den ersten Zeilen der Textdateien.

Die WORD[]-Spalten werden als Lückenfüller von der Prüfmaschine erstellt, da ich keine weiteren Messdaten außerhalb von Kraft, Weg, Durchbiegung, Biegespannung benötige.

Falls dir das weiterhelfen sollte

Fehlermeldung.PNG
 Beschreibung:

Download
 Dateiname:  Fehlermeldung.PNG
 Dateigröße:  4.54 KB
 Heruntergeladen:  548 mal
Textdatei.PNG
 Beschreibung:

Download
 Dateiname:  Textdatei.PNG
 Dateigröße:  4.39 KB
 Heruntergeladen:  549 mal
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: 13.01.2019, 18:54     Titel:
  Antworten mit Zitat      
Hallo,

was die Fehlermeldung angeht: überprüfe das mal mit dem Debugger.
Falls nicht alle Dateien gleich lang sind, gibt das ein Problem.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
jannis94
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 13.01.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.01.2019, 09:39     Titel:
  Antworten mit Zitat      
Guten Morgen,

also die Dateien sind leider unterschliedlich lang, kann ich das nicht irgendwie umgehen?

Viele Grüße
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: 14.01.2019, 11:05     Titel:
  Antworten mit Zitat      
Hallo,

wenn du Matrizen verwenden willst, kannst du mit Werten auffüllen (z.B. NaN oder 0). Ansonsten Cell Arrays verwenden.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
jannis94
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 13.01.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.01.2019, 11:26     Titel:
  Antworten mit Zitat      
Ok ich versuche das mal mit beiden Varianten.

Vielen Dank schonmal.
Vielleciht werd ich mich nochmal melden müssen Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
jannis94
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 13.01.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.01.2019, 14:13     Titel:
  Antworten mit Zitat      
Hallo ich bins wieder,

wie würde ich denn die Matrizen mit NaN auffüllen? ich komm leider nicht weiter...
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: 14.01.2019, 14:50     Titel:
  Antworten mit Zitat      
Hallo,

ein Ansatz:
Ersetze Kraft(:,i) = C{:,1}; durch
Code:
if size(Kraft,1) >= length(C{:,1})
Kraft(:,i) = [C{:,i}, NaN(size(Kraft,1) - length(C{:,1}), 1)];
else
Kraft = [Kraft; NaN(length(C{:,1}) - NaN(size(Kraft,1), 1)];
Kraft(:,i) = C{:,i};
end


Eine einfachere Möglichkeit fällt mir auch nicht ein - außer eben Cell Arrays.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
jannis94
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 13.01.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.01.2019, 15:59     Titel:
  Antworten mit Zitat      
Vielen Dank für deine Hilfe. Ich habe es aber jetzt glaube ganz einfach gelöst in dem ich :

Kraft (:,i) = C(:,1)

mit "normalen" Klammern gesetzt habe und jetzt passt das alles hoffentlich so wie ich das brauche
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 - 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.