imshow: labels als beliebige Funktion der Bildindizes

imshow Zeichnet eine Matrix gegen ihre Spaltenindizes (x-Achse) und Zeilenindizes (y-Achse). Ich möchte, dass die Achsenbeschriftungen keine Indizes sind, sondern eine willkürliche Funktion der Indizes.

z.B. Tonhöhenerkennung

imshow(A, aspect='auto') woherA.shape == (88200,8)

in der x-achse zeigt mehrere ticks bei etwa[11000, 22000, ..., 88000] Zeigt auf der y-Achse den Frequenzbereich an[0,1,2,3,4,5,6,7]

Was ich will ist:

x-Achsen-Beschriftungen werden von Samples zu Sekunden normalisiert. Für einen 2 Sekunden langen Ton mit einer Samplerate von 44,1 kHz möchte ich zwei Ticks bei[1,2].

Die Beschriftung der y-Achse ist die Tonhöhe als Note. Ich möchte die Etiketten in der Note der Tonhöhe['c', 'd', 'e', 'f', 'g', 'a', 'b'].

im Idealfall:

imshow(A, ylabel=lambda i: freqs[i], xlabel=lambda j: j/44100)

Antworten auf die Frage(1)

Ihre Antwort auf die Frage