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

Interpolation

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.03.2013, 17:47     Titel: Interpolation
  Antworten mit Zitat      
Hallo liebe Forum-Member,

ich simuliere gerade einen Temperatur-Sensor, dabei kommt es auch vor das ich in der Zeitreihe NaN Werte habe. Ich möchte eine automatische Interpolation ausführen in einer Methode habe. Dabei habe mein Array der Methode übergeben, beispielsweise folgendes Array

... 3 5 6 7 6 NaN NaN 2 1 0 -2 NaN NaN NaN 9 10

Die Methode soll automatisch die NaN-Werte zwischen den verfügbaren Werten mittels interpolation durchführen und es zurückgeben.


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.03.2013, 18:11     Titel:
  Antworten mit Zitat      
Hallo,

du kannst mit logischer Indizierung und isnan die gültigen Daten finden, siehe auch
http://www.mathworks.com/help/relea.....missing-data.html#f0-8511
Mit interp1 kannst du dann die ungültigen Daten interpolieren.

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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.03.2013, 01:02     Titel:
  Antworten mit Zitat      
Ich versuche gerade das beispiel von Matlab für mein Beispiel zu ändern, aber kbekomme es nicht hin..

Code:

x = 0:10;
y = sin(x);
xi = 0:.25:10;
yi = interp1(x,y,xi);
plot(x,y,'o',xi,yi)
 
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.03.2013, 10:07     Titel:
  Antworten mit Zitat      
Hallo,

ein Beispiel:

Code:
data = [3 5 6 7 6 NaN NaN 2 1 0 -2 NaN NaN NaN 9 10];
x = 1:numel(data);
good = ~isnan(data);
data(~good) = interp1(x(good), data(good), x(~good));


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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.03.2013, 19:00     Titel:
  Antworten mit Zitat      
ich möchte nach dem interpolations verfahren gerne eine statistik führen, beispielsweise...

es wurde von 500 werten 20 werte interpoliert.
die interpolation hat mehr am anfang, mitte am ende statt gefunden
der mittelwert der daten beträgt blax, und die interpolierten werte haben den mittelwert blay

welche verfahren eignen sich dafür, gibt es fertige funktionen.
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 28.03.2013, 20:24     Titel:
  Antworten mit Zitat      
Hallo,

Code:
data = [3 5 6 7 6 NaN NaN 2 1 0 -2 NaN NaN NaN 9 10];
x = 1:numel(data);
good = ~isnan(data);
data(~good) = interp1(x(good), data(good), x(~good));


Einige Deiner Fragen sind damit einfach zu lösen:
Zitat:
1. es wurde von 500 werten 20 werte interpoliert.

Code:
nWerte = numel(data)
nInterpolated = sum(~good);


Zitat:
2. der mittelwert der daten beträgt blax, und die interpolierten werte

haben den mittelwert blay
Code:
meanAllData = mean(data);
meanGoodData = mean(data(good));
meanIterpolatedData = mean(data(~good));


Aber dies ist Wischi-Waschi:
Zitat:
die interpolation hat mehr am anfang, mitte am ende statt gefunden

Was soll denn "mehr am Anfang" genau heißen? Bei welcher Grenze hört denn der Anfang auf? Vielleicht meinst Du:
Code:
index = 1:numel(data);
centerOfMassOfInterpolated = mean(index(~good));

Das wäre der Index des Schwerpunktes aller interpolierten Werte.

Alles also keine Aufgabe für ein spezielles Tool, sondern bei Einzeiler selbst machbar, oder?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.03.2013, 00:44     Titel:
  Antworten mit Zitat      
Ein paar Statistik-Werte fehlen mir noch, die ich im Internet nicht gefunden habe.

spannweite?

modalwert/modus ?

perzentilwerte quartile?


Code:
Standarddeviation = std(data);
ist das die korrekte Funktion für standardabweichung
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.03.2013, 10:55     Titel:
  Antworten mit Zitat      
Hallo,

du musst die Begriffe an sich nur auf Englisch übersetzen und dann vielleicht noch in der Hilfe danach suchen.

Spannweite --> range
Modus --> mode
Perzentile --> prctile

Und ja, std ist die Standardabweichung.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 01.04.2013, 13:23     Titel:
  Antworten mit Zitat      
Hallo,

Ob std die Standardabweichung ist, kannst Du selbst durch das Lesen der Dokumentation heruas finden:
Code:

Wir Forums-User machen das zwar gerne, aber eigentlich ist das Nacherzählen der Dokumentation ineffizient, wenn es doch bereits lokal auf Deinem Rechner alle benötigten Informationen gibt.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.04.2013, 16:08     Titel:
  Antworten mit Zitat      
was mach ich, wenn ich jetzt im datensatz nan habe, da bekomme ich als std und mittelwerte nur nan gezeigt,.


ich habe bevor ich die mittelwerte und std rechen nullen und andere werte mit nan ersetzt
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.04.2013, 16:19     Titel:
  Antworten mit Zitat      
Hallo,

für einige Funktionen gibt es in der Statistics Toolbox Funktionen mit nan davor, wie nanmean, nanstd, etc.

Falls es solche Funktionen nicht gibt, musst du selbst mit den NaN umgehen, siehe
http://www.mathworks.com/help/relea.....nalysis/missing-data.html

Grüße,
Harald
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.