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

Regression ohne NaN in einzelnen Zeilen

 

Thelxar
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 24.06.16
Wohnort: ---
Version: 2014b bis 2016b
     Beitrag Verfasst am: 24.06.2016, 17:00     Titel: Regression ohne NaN in einzelnen Zeilen
  Antworten mit Zitat      
Hallo Zusammen, ich bin neu hier und habe auch direkt eine Frage. Ich muss eine Regression zwischen 2 Matrizen machen, allerdings immer Zeile gegenüber Zeile. Wäre jetzt nicht weiter schwierig. Mein Problem ist, dass die eine Matrix unterschiedlich viele NaN beinhaltet. Gelöst habe ich das beispielhaft so:
Code:

x = 1:15;
y = [NaN 5 6 1 -3 -4 5 NaN 0 32 -44 12 NaN 0 4; NaN NaN NaN NaN 0 -88 47 -200 -66 -9999 1000000 15484984 5646 -5 -6];
x = repmat(x,2,1);
idx = isnan(x) | isnan(y);
 

Jetzt könnte ich zwar eine Regression machen, allerdings erfolgt diese dann für die gesamte Matrix. Ich brauche es aber Zeile für Zeile, so dass ich nachher (in diesem Fall) eine 2x2 Matrix bekomme mit den entsprechenden Koeffizienten. Quasi muss dieser Code
Code:

x1 = x(1,:);
y1 = y(1,:);
idx1 = idx(1,:);
a = polyfit(x1(~idx1),y1(~idx1),1);
x2 = x(2,:);
y2 = y(2,:);
idx2 = idx(2,:);
b = polyfit(x2(~idx2),y2(~idx2),1);
koeff = [a;b];
 

irgendwie automatisch umgesetzt werden. In diesem Fall ist es nur eine 2x15 Matrix. Da könnte man es per Hand machen. Ich habe aber leider später Matrizen in der Größe 15000x3000, da funktioniert es leider nicht mehr. Für Hilfe wäre ich sehr dankbar. Zerbrech mir jetzt schon seit 2 Tagen den Kopf.
Private Nachricht senden Benutzer-Profile anzeigen


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 27.06.2016, 08:35     Titel:
  Antworten mit Zitat      
Passt dieser technische Artikel von MathWorks?

Zitat:

Question
I am performing fitting using "polyfit". When the data contains NaN, the result is also NaN:
x=1:3;
y=2*x;
y(2)=NaN;
p=polyfit(x,y,1)

When using the "Basic Fitting" tool however the result does not contain NaNs. Why is this?
Answer
"Basic Fitting" ignores NaNs in the input while "polyfit" takes them into account. To obtain a result without NaNs, remove them:
x=1:3;
y=2*x;
y(2)=NaN;

all_nans=isnan(y);
x(all_nans)=[];
y(all_nans)=[];
p=polyfit(x,y,1)


Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Thelxar
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 24.06.16
Wohnort: ---
Version: 2014b bis 2016b
     Beitrag Verfasst am: 27.06.2016, 09:55     Titel:
  Antworten mit Zitat      
Nein, leider nicht. Das Problem ist, das eine Matrix existiert die an unterschiedlichen Stellen unterschiedlich viele NaN enthält. Würde man jetzt einfach die NaN löschen, würde eine Matrix mit unterschiedlicher Zeilenlänge entstehen, was nicht möglich ist. Das Problem hat sich aber erledigt, da ich eine Lösung gefunden habe, indem ich auf den Befehl polyfit verzichtet und die Regression selber gemacht habe. Jetzt funktioniert es, dass man Zeilenweise eine Regression trotz unterschiedlicher NaN-Werte durchführen kann und eine Matrix mit dem entsprechenden Koeffizienten und dem Intercept erhält.
Danke dir trotzdem.
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.