Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   
Bücher:

Fachkräfte:
Softwareentwickler (m/w) für automatische Codegenerierung
Softwareentwicklung mit MATLAB/Simulink und dSPACE TargetLink im Bereich Fahrwerkregelsysteme
Elektronische Fahrwerksysteme GmbH - Ingolstadt

Entwicklungsingenieur (m/w) für modellbasierte Softwareentwicklung
Modellbasierte Softwareentwicklung mit MATLAB/Simulink und dSPACE TargetLink
Elektronische Fahrwerksysteme GmbH - Ingolstadt

Softwareentwickler (w/m) Bypassing- und Steuergeräte-Schnittstellen
Entwicklung von Echtzeit-Software für verschiedene automotive Microcontroller
dSPACE GmbH - Paderborn

Test- und Erprobungsingenieur (m/w)
Erstellung von Testspezifikationen (z. B. in Doors) für Kundenfunktionen
Automotive Safety Technologies GmbH - Ingolstadt

Elektromobilität: E-Drive Entwicklungsingenieur HV-Energiemanagement und Betriebsstrategie (m/w)
Entwicklung von Teilfunktionen für Energiebordnetze
MBtech Group GmbH & Co. KGaA - Sindelfingen

weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Hilfe bei simpler Abfrage

 

Zbyrcsgn
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 02.08.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.08.2016, 13:47     Titel: Hilfe bei simpler Abfrage
  Antworten mit Zitat      
Hallo Leute

sitze seit einigen Tagen an einem kleinen Problem.
Ich habe viele Cell-Arrays, in welcher die Monatlichen werte einer Solaranlage sich befinden. Durch Systemausfall oder Störungen fehlen leider immer wieder einige Werte.
Nun ist mir aufgefallen das fehlende Werte mals als NaN eingetragen sind und mal als String 'NaN'. Ich würde gerne alles einheitlich haben, so dass die NaN-Werte auch als String stehen.

Hab diesen Code geschrieben um zeilen weise alles durchzuforsten:
Code:
        pdc = time_vdc_idc_pdc_tmod(:,4);
        vdc = time_vdc_idc_pdc_tmod(:,2);
        idc = time_vdc_idc_pdc_tmod(:,3);
        tmod= time_vdc_idc_pdc_tmod(:,5);
       
        for i=1:size(time_vdc_idc_pdc_tmod)
            if isequal(pdc(i),NaN)
                pdc{i} = 'NaN';
            elseif isequal(vdc(i),NaN)
                vdc{i} = 'NaN';
            elseif isequal(idc(i),NaN)
                idc{i} = 'NaN';
            elseif isequal(tmod(i),NaN)
                tmod{i} = 'NaN';
            end
        end


die time_vdc_idc_pdc_tmod ist angehängt
Sitzte schon seit paar Tagen an diesem banelem Problem

Falls jmd eine bessere idee hat, die sich besser in Matlab realisieren lässt und auch schneller ist, dann wäre ich sehr dankbar. Habe 2552 mat-Dateien mit je einer Arraygröße von 5x2977. Das Skript sollte drüberlaufen und die Datei mit ersetzten Werten abspeichern .

Danke und Liebe Grüße

ausschnitt der time_vdc_idc_pdc falls sich jmd nicht die Datei downlaoden möchte:

also die Werte von der 3. Spalte solten so sein wie die von der 4.Spalte

A170_15min_2014_07.mat
 Beschreibung:

Download
 Dateiname:  A170_15min_2014_07.mat
 Dateigröße:  67.02 KB
 Heruntergeladen:  77 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 17.531
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 02.08.2016, 15:38     Titel:
  Antworten mit Zitat      
Hallo,

Code:
toReplace = cellfun(@(x) isequaln(x, NaN), time_vdc_idc_pdc_tmod);
time_vdc_idc_pdc_tmod(toReplace) = {'NaN'};

Ich würde die Ersetzung allerdings in die andere Richtung machen, weil dann alles Zahlen sind und das effizienter verarbeitet werden kann.

Falls du das beeinflussen kannst, wären Tables sicher eine bessere Art, die Daten abzuspeichern.

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

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 02.08.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.08.2016, 17:10     Titel:
  Antworten mit Zitat      
DANKEEEE Funktioniert spitze
in tables umgewandlet mit
Code:
Dataset = cell2table(time_vdc_idc_pdc_tmod,...
    'VariableNames',{'Time' 'V_DC' 'I_DC' 'P_DC' 'T_MOD'})


Andersrum würde natürlich auch gehen kein Problem, nur wüsste ich nicht wie ich dann eine Abfrage machen könnte, die genau das da macht:
Code:
if Dataset.P_DC == NaN && isnumeric(Dataset.V_DC) && isnumeric(Dataset.I_DC)
      Dataset.P_DC = Dataset.V_DC*Dataset.I_DC;
end


Bin erst seit einem Monat an Matlab dran, lerne hauptsächlich bei learning by doing.


#EDIT:
Super, rumprobiert und es tut Very Happy

Code:
tic
toReplace = cellfun(@(x) isequaln(x, 'NaN'), time_vdc_idc_pdc_tmod);
time_vdc_idc_pdc_tmod(toReplace) = {NaN};


Dataset = cell2table(time_vdc_idc_pdc_tmod,...
    'VariableNames',{'Time' 'V_DC' 'I_DC' 'P_DC' 'T_MOD'});

for i=1:size(time_vdc_idc_pdc_tmod)
   if  isequaln(Dataset.P_DC(i),NaN)
       if isnumeric(Dataset.V_DC(i))
           if isnumeric(Dataset.I_DC(i))
               Dataset.P_DC(i) = Dataset.I_DC(i)*Dataset.V_DC(i);
           end
       end
   end    
end
toc

2sek dauerts ca

fehlt nur noch das abspeichern....
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 - 2017 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.