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

Mehrdimensionale Normalverteilung einer Matrix

 

Elli

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.10.2019, 12:11     Titel: Mehrdimensionale Normalverteilung einer Matrix
  Antworten mit Zitat      
Hallo zusammen,

ich möchte aus einer ziemlich großen Matrix, Dimension ca. 3000x5000 mit Werten von 1 bis 256, eine mehrdimensionale Normalverteilung plotten.
Dafür benutze ich bisher folgenden Code

Code:
% Multivariate Normalverteilung
[sigma,mu] = robustcov(X);
x1 = 1:1:3000;
x2 = 1:1:5000;
[X1,X2] = meshgrid(x1,x2);
X = [X1(:) X2(:)];
y = mvnpdf(X,mu,sigma);
y = reshape(y,length(x2),length(x1));

% Plotten
surf(x1,x2,y)
caxis([min(y(:))-0.5*range(y(:)),max(y(:))])
axis([1 256 1 256 0 1])
xlabel('x1')
ylabel('x2')
zlabel('Probability Density')


Das Problem ist jetzt, dass ich als Plot nur eine "schwarze Platte" ohne Topographie bekomme. Ich schätze mal, dass die Achsen zu lang sind. Das Ergebnis habe ich nämlich auch, wenn ich die Achsen vom Beispiel aus der Matlabhilfe erweitere.
Hat jemand eine Idee, wie ich die Matrix entsprechend plotten kann? Oder ist sie einfach zu groß?

Viele Grüße und vielen Dank Smile

Elli


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.10.2019, 12:58     Titel:
  Antworten mit Zitat      
Hallo,

versuch mal
Code:


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Elli

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.10.2019, 15:09     Titel:
  Antworten mit Zitat      
Hi Harald,
vielen Dank für deine Antwort.
Jetzt ist der dargestellte Plot blau, aber leider immer noch komplett eben. Ich bin mir auch nicht sicher, ob
Code:

[sigma,mu] = robustcov(X)
 
die richtige Funktion ist, um die beiden Werte aus der Matrix zu bekommen. Ich habe es auch mal mit
Code:

mu=mean(B(:))
sigma=std(B(:))
 
probiert, wobei B die Matrix ist, deren Verteilung ich haben will. Aber dann plottet es gar nicht mehr und sagt, ich hätte einen Fehler in
Code:

y = mvnpdf(X,mu,sigma);
 

Hast du da vielleicht eine bessere Idee?

Viele Grüße

Elli
 
Harald
Forum-Meister

Forum-Meister


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

was ist denn nun B?

Wie soll die ursprüngliche Matrix denn interpretiert werden? Die Zeilen als 5000-dimensionale Beobachtungen?

Wenn die Werte zwischen 1 und 256 liegen, dann solltest du auch x1 und x2 entsprechend wählen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Elli

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.10.2019, 15:51     Titel:
  Antworten mit Zitat      
Hi,

also B soll die Matrix sein, deren Verteilung ich plotten will. Das hatte ich ganz am Anfang vergessen zu erwähnen. Die Matrix B gibt mir die Pixelwerte eines Bildes an, die ich nun als Normalverteilung darstellen möchte.

Also x1 und x2 passe ich so an, richtig?
Code:
x1 = 1:1:256;
x2 = 1:1:256;


Aber wenn ich es mit
Code:
mu=mean(B(:)) sigma=std(B(:))
probiere, bleibt der Fehler in
Code:
y = mvnpdf(X,mu,sigma);
leider bestehen.

Viele Grüße

Elli
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.10.2019, 17:06     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Die Matrix B gibt mir die Pixelwerte eines Bildes an, die ich nun als Normalverteilung darstellen möchte.

Was ist daran aber denn nun multivariat? Die Kanäle R, G und B?

Wenn du mu und sigma wie beschrieben berechnest, dürften Skalare herauskommen. Das passt eben nicht zum multivariaten Ansatz.

Wenn du Fehlermeldungen bekommst, bitte immer auch angeben, welche Fehlermeldung du bekommst.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Elli

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.10.2019, 18:23     Titel:
  Antworten mit Zitat      
Hallo Harald,

du hast recht, die Skalare kann ich dann ja mit einer normpdf plotten.
Genau, ich dachte, dass ich R,G und B als Matrizen multivariat plotten muss. Der Fehler, der angezeigt wurde, war
Code:
Error in Multivariate (line 42)
y = mvnpdf(X,mu,sigma);


Aber ich denke, dass normpdf dann doch die Lösung ist. Ganz am Anfang hatte ich es auch so probiert, aber bei den Skalaren einen Fehler gemacht und den Ansatz deshalb wieder verworfen...

Also vielen Dank für deine Hilfe!
Dir noch einen schönen Abend und hoffentlich ein langes Wochenende Smile

Liebe Grüße

Elli
 
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.