2015-10-12 1 views
1

J'ai une matrice 100x200 et je voudrais montrer cette matrice comme un diagramme de densité. Voici un exemple 8x10.Diagramme de densité d'une matrice

X = [104 122 138 159 149 167 184 164 190 158; ... 
    54 42 55 55 63 75 72 73 66 76; ... 
    15 22 28 21 23 28 32 47 32 40; ... 
    18 12 20 22 28 17 30 17 22 18; ... 
    10 7 14 10 14 11 14 20 16 10; ... 
    5 6 3 3 6 12 6 2 8 9; ... 
    4 8 9 2 5 3 3 12 7 7; ... 
    6 6 2 3 10 1 9 8 11 8] 

J'ai essayé d'utiliser des fonctions telles que bar3, surf, hist et ainsi de suite, mais ils n'ont pas le résultat final, je suis après.

Je voudrais également représenter l'axe y sur le nouveau tracé réussi pour être sur un axe de journal. Donc, semblable à avoir semilogy(x,y,'rx') par exemple.

Y a-t-il d'autres méthodes que je pourrais utiliser?

enter image description here

+0

Voulez-vous une surface plane (lissé) où la partie supérieure est rouge foncé, et la partie inférieure est bleu (ou quelque chose de similaire), ou 3D -plot avec les nombres élevés comme pics (lissés), un tracé de barre 3D (non lissé), ou quelque chose d'autre? –

+0

Ainsi, une couleur rouge refléterait un nombre plus élevé dans la matrice. Une couleur bleue représenterait un nombre bas. Donc, je suis après un complot où les couleurs vont du bleu-rouge en fonction du nombre dans la matrice. – user3536870

+0

Je ne suis pas vraiment sûr de ce que le résultat devrait être. Avez-vous besoin de quelque chose comme 'imagesc (X)'? Ou peut-être pourriez-vous télécharger un petit croquis? – hbaderts

Répondre

3

Que diriez-vous "surfer" comme un spectrogramme?

XX = log([104 122 138 159 149 167 184 164 190 158; 
      54 42 55 55 63 75 72 73 66 76; 
      15 22 28 21 23 28 32 47 32 40; 
      18 12 20 22 28 17 30 17 22 18; 
      10 7 14 10 14 11 14 20 16 10; 
      5 6 3 3 6 12 6 2 8 9; 
      4 8 9 2 5 3 3 12 7 7; 
      6 6 2 3 10 1 9 8 11 8] 

figure 
surf(XX, 'edgecolor', 'none'); view(0,90); axis tight; 
xlabel ('x') 
ylabel ('y') 

enter image description here

NOTE: La première ligne représente la première ligne (104122138 ...) et la ligne 8 représentent la ligne 8 (6,7,2 ....) rouge foncé = Haut valeur bleu clair = faible valeur

+0

J'apprécie beaucoup cela !!! Juste une dernière chose, comment puis-je enregistrer l'axe des y ?? – user3536870

+0

Que voulez-vous dire par logarithme de l'axe Y? Voulez-vous dire connecter l'axe z? Je me suis déjà connecté (X), les axes x et y représentent maintenant l'index de votre matrice X, alors que les couleurs (axe z) représentent le log de vos valeurs dans X – GameOfThrows

+0

Ouais je lis assez bêtement la matrice sur votre réponse . Brillant, merci – user3536870

2

Matlab fournit également une fonction de carte thermique.

>> X = [104 122 138 159 149 167 184 164 190 158; ... 
    54 42 55 55 63 75 72 73 66 76; ... 
    15 22 28 21 23 28 32 47 32 40; ... 
    18 12 20 22 28 17 30 17 22 18; ... 
    10 7 14 10 14 11 14 20 16 10; ... 
    5 6 3 3 6 12 6 2 8 9; ... 
    4 8 9 2 5 3 3 12 7 7; ... 
    6 6 2 3 10 1 9 8 11 8]; 
>> heatmap(X) 

ans = 

    HeatmapChart with properties: 

    ColorData: [8×10 double] 

    Show all properties 

L'intrigue suivante apparaît: Heatmap of the matrix X