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

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:  294 mal
Bild1.PNG
 Beschreibung:
Workspace Ausgabe

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


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     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:  354 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     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
.





 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.