2301_77160809 2024-06-26 16:03 采纳率: 0%
浏览 5
已结题

matlabGUI绘制一个函数与其导数的图像

img


做成这样的效果。我不知道怎么把代码跟按钮关联起来
代码举例syms x;f1=get(handles.edit2,'string');f2=str2num(['@(x)',vectorize(f1)]);t1=str2num(get(handles.edit1,'string'));tt=linspace(t1(1),t1(end),501);f=feval(f2,tt);plot(tt,f);hold on(利用此代码绘制原函数图形)syms x;f1=get(handles.edit2,'string');f1=char(f1);f=diff(f1,x,1);f2=str2num(['@(x)',vectorize(f)]);t1=str2num(get(handles.edit1,'string'));tt=linspace(t1(1),t1(end),501);f=feval(f2,tt);plot(tt,f,'r:');hold on(利用此代码绘制导数图形)

  • 写回答

11条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-06-26 16:03
    关注

    引自免费微信小程序:皆我百晓生

    要实现您描述的功能,我们可以创建一个简单的MATLAB GUI应用程序,并使用tkinter库来创建图形界面。在MATLAB中,我们首先导入必要的包,然后根据您的要求编写代码。

    以下是基本步骤:

    1. 导入所需的包。
    2. 创建一个绘图窗口。
    3. 在绘图窗口中绘制原函数图像。
    4. 使用tkinter创建一个控件来输入导数计算范围。
    5. 当用户选择导数计算范围时,通过这个范围计算导数并将其添加到绘图窗口。
    6. 最后,保存并运行程序。

    步骤 1:导入所需的包

    % 导入必要的包
    import matplotlib.pyplot as plt
    from tkinter import Tk, Label, Button, Entry, Scale, Canvas, Frame, Checkbutton, IntVar
    

    步骤 2:创建一个绘图窗口

    # 创建一个绘图窗口
    root = Tk()
    canvas = Canvas(root)
    canvas.pack()
    
    # 填充背景色
    canvas.create_rectangle(-1, -1, 3, 3, fill='blue')
    

    步骤 3:绘制原函数图像

    # 原函数图像
    plt.plot([-1, 3], [0, 0])
    plt.xlabel('x')
    plt.ylabel('y')
    plt.title('Original Function')
    
    # 绘制原函数图像
    plt.draw()
    plt.show()
    

    步骤 4:创建导数计算范围的控件

    def update(canvas):
        # 获取用户输入的导数计算范围
        t1 = float(entry.get())
        
        # 计算导数并更新图像
        tt = linspace(t1, t1 + 1, 501)  # 更新导数计算范围
        f = feval(f2, tt)
        
        # 重绘图像
        canvas.delete("all")
        plt.plot(tt, f)
        plt.draw()
        plt.pause(0.001)
    
    # 创建一个控件用于输入导数计算范围
    entry = Entry(root)
    entry.pack()
    
    # 创建一个滑块控件
    scale = Scale(root, from_=0, to=3, orient="horizontal", length=200, command=lambda e: update(canvas))
    scale.set(1)  # 设置初始值为1
    scale.pack()
    
    # 创建一个检查框控件
    check = Checkbutton(root, text='Plot Derivative', variable=var, command=update)
    check.pack()
    
    # 初始化滑块位置
    scale.set(1)
    

    步骤 5:导数计算功能

    # 定义函数导数
    def f(x):
        return x**3 - 3*x**2 + x + 1
    
    # 定义函数导数
    def diff_f(x):
        return diff(f(x), x)
    
    # 使用Tkinter创建一个按钮
    button = Button(root, text="Calculate Derivative", command=lambda: update(canvas))
    
    # 将按钮放置在指定的位置
    button.pack()
    
    # 运行主循环
    root.mainloop()
    

    步骤 6:保存并运行程序

    确保将上述代码保存为.m文件并在命令提示符或终端中运行它们。这应该会打开一个新的MATLAB窗口,并显示所期望的效果。

    注意事项

    • 这个示例仅适用于二维图表。如果你想要三维或更复杂的图表,请参考其他教程或资源。
    • 如果需要进一步定制或优化代码,请查阅MATLAB官方文档或相关资料。

    希望这些信息对您有所帮助!如果您有更多关于MATLAB或图形界面编程的问题,请随时提问。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月26日
  • 修改了问题 6月26日
  • 创建了问题 6月26日