Ändern von Achsenwerten mit imshow und Anzeigen von Datenpunkten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
pyhill00
User
Beiträge: 30
Registriert: Mittwoch 20. März 2019, 22:39

Ich möchte die Achsen ändern, damit ich die Werte der x- und y-Komponenten der beiden Frequenzen sehen kann. Ich habe zwei Codes: der erste zeigt die richtigen Daten, aber die Achsen sind falsch, der zweite zeigt die richtigen Achsen, aber meine zwei Datenpunkte werden nicht angezeigt.

Erster Code:

Code: Alles auswählen

    from scipy.fft import fft2, fftshift
    import numpy as np
    import matplotlib.pyplot as plt
    from skimage.filters import window
    from scipy.fftpack import fftfreq


    k = np.linspace(0,4.76*10,2400)
    kx,ky = np.meshgrid(k, k)
    x1 = 0.3
    y1 = 0.4
    x2 = 0.3
    y2 = 1

    z = 0.05*np.cos(2*np.pi*kx*x1 + 2*np.pi*ky*y1) + 0.05*np.cos(2*np.pi*kx*x2 + 2*np.pi*ky*y2)

    wz = z * window('hann', z.shape)


    zf = np.abs(fftshift(fft2(wz)))[1200:, 1200:]
    plt.figure(1)
    plt.axis([0,100, 0,100])

    plt.imshow(zf)
    plt.show()
Und das Ergebnis

https://imgur.com/a/S4uVu8k

Zweiter Code:

Code: Alles auswählen


    from scipy.fft import fft2, fftshift
    import numpy as np
    import matplotlib.pyplot as plt
    from skimage.filters import window
    from scipy.fftpack import fftfreq


    k = np.linspace(0,4.76*10,2400)
    kx,ky = np.meshgrid(k, k)
    x1 = 0.3
    y1 = 0.4
    x2 = 0.3
    y2 = 1

    z = 0.05*np.cos(2*np.pi*kx*x1 + 2*np.pi*ky*y1) + 0.05*np.cos(2*np.pi*kx*x2 + 2*np.pi*ky*y2)

    wz = z * window('hann', z.shape)


    zf = np.abs(fftshift(fft2(wz)))[1200:, 1200:]
    fig, ax = plt.subplots()
    ax.set(xlim=(0, 2), ylim=(0, 2))

    f = fftfreq(len(k), np.diff(k)[0])
    ax.imshow(zf,extent=[0,f[:k.size//2][-1], 0 , f[:k.size//2][-1]])
    plt.show()
Ergebnis:

https://imgur.com/a/Vk29DCs
pyhill00
User
Beiträge: 30
Registriert: Mittwoch 20. März 2019, 22:39

Ich hab's: ax.imshow(zf, origin='lower', extent=[0,f[:k.size//2][-1], 0 , f[:k.size//2][-1]])

origin war nicht unten -_-
Antworten