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

Bug Rang einer Matrix überprüfen

 

Hans Wurst
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 19.12.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.12.2011, 12:56     Titel: Bug Rang einer Matrix überprüfen
  Antworten mit Zitat      
Hallo,

bei der Maximierung einer Likelihoodfunktion simuliere ich mir die Matrizen xx und yy. Die Dimension von xx ist n kreuz 3, die von yy n kreuz 1. Anschließend lasse ich die Regression yy=beta*xx+e mit dem Befehl "xx\yy" laufen.

In einigen Fällen erscheint die Warnung:

Code:
{Warning: Rank deficient, rank = 2,  tol =   1.1852e-013.}



Um dies zu vermeiden habe ich eine if-Abfrage eingebaut:

Code:
if  rank(xx)<3
                     alphahat = 0;
                     betahat = 0;
 else                        
                    beis = xx\yy;
                    alphahat = -2*beis(3);
                    alphahat(alphahat<0)=0;
                    betahat  =  beis(2);
end


Leider funktioniert diese if-Abfrage nicht richtig. Es gibt Fälle in denen rank(xx)=3 erfüllt ist und Matlab dennoch die obige Warnung anzeigt, wenn es die Regression durchführen soll.

Habt ihr eine Idee wie man das Problem lösen kann?

Vielen Dank im Voraus
Private Nachricht senden Benutzer-Profile anzeigen
Verschoben: 19.12.2011, 13:02 Uhr von Jan S
Von Bugs MATLAB nach Programmierung


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.12.2011, 13:59     Titel:
  Antworten mit Zitat      
Hallo,

poste doch bitte so ein Beispiel.
Mit welcher MATLAB-Version arbeitest du?

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

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 19.12.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.12.2011, 12:06     Titel:
  Antworten mit Zitat      
Hier ist eine zip Datei mit der xx und yy Matrix sowie dem Auszug aus der Diary Datei. Die in der Diary erwähnten Dateien "MCLikeliSALEISnumVi" und "MCSALEISnumVi" rufen die Optimierung der Likelihood auf.

Die Matlab Verison ist: 7.12.0.635 (R2011a) 32-bit

rankbug.zip
 Beschreibung:

Download
 Dateiname:  rankbug.zip
 Dateigröße:  1.65 KB
 Heruntergeladen:  382 mal
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: 20.12.2011, 13:20     Titel:
  Antworten mit Zitat      
Ohne viel von der linearen Algebra dahinter zu verstehen Smile , habe ich mit der Tolreranz herumgespielt und leicht erhöht:

Code:

rank(xx)
ans =
     3

rank(xx,2e-12)
ans =
     2
 


Sieht also nach einem numerischen Effekt aus. Ich glaube nicht, dass es ein fehler ist, kann aber nicht fundamental argumentieren.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 20.12.2011, 17:51     Titel:
  Antworten mit Zitat      
Hallo Hans Wurst,

Schau Dir mal die SVD der Matrix xx an: Die Singulärwerte sind:
158.294848552099
1.33947531124419e-005
1.42156173446843e-012

Das letzte Element verschwindet fast im Vergleich zum ersten. Nun kommt es bei der Berechnung des Rangs deshalb auf numerische Effekte an.

Gruß, Jan
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.