【问题标题】:Derivative in MATLAB gui?MATLAB gui中的导数?
【发布时间】:2013-08-17 16:45:16
【问题描述】:

我正在尝试计算编辑文本框 (edit1) 的导数并在静态文本框 (text1) 中显示答案。但它只是显示数字。我做错了什么?

% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
x=-10:.1:10;
equation = get(handles.edit1, 'String');
y = eval(equation);
derive_func = diff(y);
set(handles.text1, 'String', derive_func);
plot(y);

GUI Image - 如您所见,它绘制了函数,但在尝试区分时返回 3 行数字:

【问题讨论】:

    标签: matlab function user-interface plot derivative


    【解决方案1】:

    您看到重载函数diff 的两种不同用法之间存在冲突。默认内置使用是数值微分,并且您将函数应用于数值变量y,因此您将获得数值输出。

    您似乎想要做的是使用符号数学工具箱中的diff 来显示5*x^4,这需要您通过提供正确输入的差异来告诉matlab您想要使用符号数学工具箱,通常一个字符串。

    我正在使用 matlab R14 并且在 sym 工具箱中使用较新版本进行了很多更改,但是以下内容应该适合您。

    str = 'x^5';
    diff(str,'x')
    

    其中str 是您要以符号方式区分的表达式。请注意,在我的版本中,sym 工具箱对符号 x.^5 不满意,并且更喜欢 x^5,我不知道它在 MuPad 上如何工作,但您可能必须找到一种解决方法来确保您提供 MuPad (或您正在使用的任何 sym 引擎)带有它可以处理的字符串。

    编辑

    之前关于使用cdaddpath 来控制使用哪个版本的重载函数diff 的建议已被删除。

    【讨论】:

    • 不要告诉人们他们需要 cd 到 MATLAB 工具箱目录才能使用它!这是非常糟糕的编程风格。搜索路径的存在是有原因的。学习使用它。
    • @woodchips 澄清一下会很好:您建议的替代方案是什么。我尝试使用该函数的完整路径进行 str2fun,但在我的系统上,它不像我链接到的答案中发布的那样工作。
    • 你需要学会在matlab中使用路径。因此 pathtool、addpath、rmpath、savepath 等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    相关资源
    最近更新 更多