Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Studierende:
Praktikant (w/m) Toolentwicklung Matlab
Branche: Beratung, Expertise, Fahrzeugtechnik, Fahrzeugteile, Technische Dienstleistungen
MBtech Group GmbH & Co. KGaA - Fellbach

Abschlussarbeit / Praktikum: Entwicklung Matlab (m/w)
Branche: Informationstechnologie, Elektrotechnik, Elektronik
GIGATRONIK Technologies GmbH - Ulm

Praktikum - Optische Verbrennungsdiagnostik von Zündsystemen mit MATLAB
Branche: mehrere
IAV GmbH - Ingenieurgesellschaft Auto und Verkehr - Berlin

Abschlussarbeit in der Vorentwicklung
Branche: Fahrzeugtechnik, Fahrzeugteile
Woodward L'Orange GmbH - Stuttgart

Praktikant / Werkstudent (m/w) modellbasierte Softwareentwicklung
Branche: Elektrotechnik, Elektronik, Fahrzeugtechnik, Fahrzeugteile
DRÄXLMAIER Group - Garching an der Alz

weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Einlesen von Messdaten hat nur NaN Werte

 

kwd46056
Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 27.10.17
Wohnort: Regensburg
Version: ---
     Beitrag Verfasst am: 15.11.2017, 18:59     Titel: Einlesen von Messdaten hat nur NaN Werte
  Antworten mit Zitat      
Hallo miteinander,

hab leider immernoch Probleme mit meinem Matlab Code und langsam drängt die Zeit Shocked . Folgendes Problem: Wenn ich Messdaten aus einer CSV Datei in Matlab reinlese und es mit meinem Hauptprogramm starte, gibt mir workspace nur NaN Werte raus.(siehe Datei)

Hauptprogramm:
Code:
%% Definition der Pfade

strPathSim  = 'C:\Users\David\Desktop\Test Simulation\HALL_FE42_GMT_64045602.p00.output\';
strPathMess = 'C:\Users\David\Desktop\Test Simulation\Messungen_Subvars\09 Messdaten\HALL\';
%spckMain    = 'C:\Users\David\Desktop\Test Simulation\HALL_FE42_GMT_64045602.p00.spck';
strFileSim  = 'C:\Users\David\Desktop\Test Simulation\HALL_FE42_GMT_64045602.p00.output\HALL_test_var_GMT_64045602.p00.mat';

strHALL     =  'GMT_64045602';

strFileMess = ['HALL_' strHALL '_Messung.csv'];

aryFreqs = [.05 .1 .2 .5 1 1.5 2 3 4 5 7 10];


%% Plots der Mess- und Simulationsergebnisse

[res, b] = evalPlotMessSim(...
                   strHALL,...
                   aryFreqs,...
                  [strPathMess strFileMess],...
                   strFileSim...
                   );
 


Plotprogramm:

Code:
function  [result, b] = evalPlotMessSim(...
                      strHall,...
                      freqs,...
                      file,...
                      simfile)
%Daten von Messungen einlesen
measData = readMessung(file);
%Daten von Simulation einlesen
simDatas  = readSimulation(simfile, freqs);
%für alle Frequenzen
allFreqs = sort(unique([measData.f, simDatas.f]));                         %sortieren und einmalig anzeigen aus Funktionen
       
%% Kraft-Weg (x-F) Plots mit Einrichtung der Seite
b(2) = figure(...
    'Name', sprintf('%s x-F %s', strHall),...  
                    'PaperType',    'A4', ...
                    'Units','centimeters', ...
                    'PaperUnits','centimeters');
pos   = get(b(2), 'Position');
psize = get(b(2), 'Papersize');
set(b(2), 'Position', [pos(1:2)+pos(3:4)-psize psize]);
set(0, 'defaultAxesFontSize', 6);

%Plots in drei Spalten verteilen
ncols = 3;                                                                 %Seite wird in 3 Spalten aufgteilt
nrows = ceil(length(allFreqs)/ncols);                                      %Anzahl der Reihen auf der Seite mit Obergrenze

icol   = 0;
irow   = 1;
result = Formeln();

for iplot = 1:length(allFreqs)
    freq = allFreqs(iplot);
    icol = icol + 1;
    if icol>ncols, icol=1; irow=irow+1;
    end
   
    ax = subplot(nrows, ncols, iplot);
    hold (ax, 'on');
    grid (ax, 'on');
    set  (ax, 'XMinorGrid', 'on', 'YMinorGrid', 'on');
   
   
% Messdaten plotten
      indData = find(freq == [measData.f]);
      if ~isempty(indData) &&  ~isempty(measData(indData).x)
            plot(ax, 1000*measData(indData).x, 0.001*measData(indData).F, 'x-');
            result = measData(indData), 'meas';                                  
      end
 


Messdaten reinlesen mit Funktion:

Code:
function data = readMessung(file)                                          %(strFileMess)=Werte die eingelesen werden; data=Werte die von Funktion berechnet werden
%Einlesen der Messungen (csv.file) und abspeichern im Strukturbereich
%   Detailed explanation goes here
     
    tbl = readtable(file);                                                
    data  = struct('f', {}, 'x', {}, 'F', {} );                            
   
    n=0;
    for i = 1:2:width(tbl)                                                
        n    = n+1;
        name = tbl.Properties.VariableNames(i);                                
        freq = str2double(regexprep(name, {'_','[a-zA-Z]'},{'.' ''}));    
        data(n)  = struct(...                                              
                   'f', freq, ...
                   'x', 1000*str2double(char(tbl{2:end,i+0})),...        
                   'F', 0.001*str2double(char(tbl{2:end,i+1})) );          
    end
                   

end


Weiß langsam nicht mehr weiter, wo die Probleme bei meinem Code liegen. Hat jemand einen Tipp bzw. Rat?

Gruss
kwd46056 

Bild2.PNG
 Beschreibung:
Werte measData

Download
 Dateiname:  Bild2.PNG
 Dateigröße:  19.11 KB
 Heruntergeladen:  36 mal
Bild1.PNG
 Beschreibung:
Workspace Ausgabe

Download
 Dateiname:  Bild1.PNG
 Dateigröße:  23.58 KB
 Heruntergeladen:  38 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 18.671
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 15.11.2017, 23:50     Titel:
  Antworten mit Zitat      
Hallo,

bitte grenze das Problem erst mal selbst ein. Von dem endlos langen Code, den du postest, werden vermutlich 2 oder 3 zur Problemlösung relevant sein.
Etwas entscheidendes fehlt leider: die .csv-Datei.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 27.10.17
Wohnort: Regensburg
Version: ---
     Beitrag Verfasst am: 16.11.2017, 07:52     Titel:
  Antworten mit Zitat      
Hallo Harald,

wie gesagt, mein Code plottet mir die Werte nicht in die Diagramme. Er bringt beim ausführen des Programm die Plottseite (Einteilung der Seite in Spalten und Reihen usw.) aber die Plots sind leer. Es liegt daran das die Messdaten von der CSV Datei nicht eingelesen werden, was man im 2ten Bild von meinem Beitrag sehen kann (x und F Werte sind NaN). Hab jetzt mal eine Spalte der CSV.datei in einer Textdatei hochgeladen. Dort sind für eine Frequenz die Verschiebung mit der dazugehörigen Kraft dargestellt. 

Messdaten.txt
 Beschreibung:
Messdaten Verschiebung über Kraft für eine Frequenz

Download
 Dateiname:  Messdaten.txt
 Dateigröße:  5.12 KB
 Heruntergeladen:  93 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 18.671
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 16.11.2017, 10:59     Titel:
  Antworten mit Zitat      
Hallo,

deine Datei verwendet Komma als Dezimaltrennzeichen und beginnt nicht direkt mit den Daten. Das solltest du vorab behandeln bzw. bei readtable als Option angeben.

Du kannst auch mal mit dem Import Tool Code erzeugen, um diese Datei zu importieren.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 27.10.17
Wohnort: Regensburg
Version: ---
     Beitrag Verfasst am: 16.11.2017, 11:18     Titel:
  Antworten mit Zitat      
Hi ich bins wieder Smile. Habs jetzt soweit geschafft die Messdaten über die Funktion reinzuladen und zu plotten. Der Fehler lag in der Funktion. Da musste für x und F statt str2double, str2num eingesetzt werden. Vielen Dank für eure Hilfe. Der nächste Schritt besteht nun darin die Simulationsdaten reinzuladen und zu plotten Very Happy. Hoffe ich bekomm das hin. Sonst meld ich mich wieder.

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



goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2018 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.