2016-08-21 4 views
0

Ich habe versucht, hist3 zu verwenden, um eine zweidimensionale Verteilung visuell anzuzeigen, jedoch verhält sich die Funktion unerwartet. Ich dachte, dass es ein 2D-Histogramm (eine Zählung) zurückgibt, wie oft jedes Zahlenpaar in der Eingabematrix auftritt, und zeigt diese Zählung an einer Position in der Ausgabematrix an, deren Indizes diesem Zahlenpaar entsprechen, skaliert auf einen Faktor von 10 (standardmäßig) oder eine andere quadratische Matrixgröße. Aber das ist nicht das, was meine Testbeispiele gezeigt:Matlab - hist3 liefert keine erwartete Ausgabe

Zum Beispiel, wenn ich die folgende Eingabematrix definieren

1 1 
2 2 
3 3 
4 4 
5 5 

dann der Befehl v = hist3 (m, [5 5]) hat folgende erwartete Ausgabe:

1 0 0 0 0 
0 1 0 0 0 
0 0 1 0 0 
0 0 0 1 0 
0 0 0 0 1 

jedoch für diese Eingangsmatrix:

4 1 
4 2 
4 3 
4 4 
4 5 

der Ausgang ist:

0 0 0 0 0 
0 0 0 0 0 
1 1 1 1 1 
0 0 0 0 0 
0 0 0 0 0 

..rather als (wie ich erwartet hätte):

0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0 
1 1 1 1 1 
0 0 0 0 0 

Kann mir jemand helfen, die Verwirrung löschen? Vielen Dank!

Antwort

1

Es liegt daran, dass die Standardindizes Werte zwischen 2 und 6 liegen, so dass 4 der dritte Index ist. Versuchen Sie es zu zeichnen:

figure; 
hist3(m,[5 5]) 

EDIT

Ein Weg, um die Kanten zu bestimmen, mit hist3

EDGES = {(1:5)-0.5, (1:5)-0.5}; 
figure;hist3(m,'Edges',EDGES); 

+0

Ich fürchte, ich noch don nicht Der Grund warum hist3 diese unerwartete Matrix in meinem zweiten Beispiel zurückgibt. Willst du damit sagen, dass ich die Umgehungslösung verwenden muss, um das zu bekommen, was ich davon will? Außerdem hat deine erste Handlung eine 2D-Basis von Dimensionen 6x5 anstatt 5x5 als die Matrix in meinem Beispiel?! ... – z8080

+1

Ja, nun. Wenn Sie die Balken in der vierten Spalte wirklich mögen, müssen Sie mit den Kanten spielen. Wenn Sie die Kanten nicht angeben, wird Matlab dies automatisch tun. Ich denke, dass Sie hier verwirrt sind, weil die Indizes und die Werte die gleiche Reichweite haben. Versuchen Sie, die Ausgangsmatrix mit zehn zu multiplizieren. Sie werden sehen, dass die Ausgabe von 'v = hist3 (vv, [5 5])' immer noch die gleiche ist, aber die Darstellung von 'hist3 (m, [5 5])' ändert sich entsprechend dem neuen Bereich von Werten im Initial Matrix. – shamalaia

+0

habe ich mich selbst erklären? – shamalaia

Verwandte Themen