请使用Python调用GUI实现傅里叶变换
以下是使用Python调用GUI实现傅里叶变换的示例代码:
import matplotlib.pyplot as plt
import numpy as np
from tkinter import *
from tkinter import filedialog
class FourierTransformGUI:
def __init__(self, master):
self.master = master
master.title("Fourier Transform")
self.file_path = ""
self.signal = None
self.fft = None
self.file_label = Label(master, text="File: ")
self.file_label.grid(row=0, column=0)
self.file_button = Button(master, text="Select", command=self.select_file)
self.file_button.grid(row=0, column=1)
self.signal_label = Label(master, text="Signal: ")
self.signal_label.grid(row=1, column=0)
self.signal_text = Text(master, height=10, width=50)
self.signal_text.grid(row=1, column=1)
self.fft_label = Label(master, text="FFT: ")
self.fft_label.grid(row=2, column=0)
self.fft_text = Text(master, height=10, width=50)
self.fft_text.grid(row=2, column=1)
self.plot_button = Button(master, text="Plot", command=self.plot_fft)
self.plot_button.grid(row=3, column=0)
self.quit_button = Button(master, text="Quit", command=master.quit)
self.quit_button.grid(row=3, column=1)
def select_file(self):
self.file_path = filedialog.askopenfilename()
self.read_file()
def read_file(self):
with open(self.file_path, 'r') as f:
data = f.readlines()
self.signal = np.array([float(x.strip()) for x in data])
self.update_signal_text()
def update_signal_text(self):
self.signal_text.delete(1.0, END)
for x in self.signal:
self.signal_text.insert(END, str(x) + "\n")
def update_fft_text(self):
self.fft_text.delete(1.0, END)
for x in self.fft:
self.fft_text.insert(END, str(x) + "\n")
def compute_fft(self):
self.fft = np.fft.fft(self.signal)
self.update_fft_text()
def plot_fft(self):
if self.signal is not None:
self.compute_fft()
plt.plot(np.abs(self.fft))
plt.show()
root = Tk()
gui = FourierTransformGUI(root)
root.mainloop()
该GUI界面包括一个文件选择按钮、一个信号文本框、一个FFT文本框、一个绘图按钮和一个退出按钮。当用户选择一个文件后,程序会读取该文件中的数据,并在信号文本框中显示。用户可以点击绘图按钮,以显示信号的FFT。程序使用NumPy库中的fft函数来计算FFT。
原文地址: https://www.cveoy.top/t/topic/bb4L 著作权归作者所有。请勿转载和采集!