0

我正在尝试计算编辑文本框(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 图像- 如您所见,它绘制函数,但在尝试区分时返回 3 行数字:

4

1 回答 1

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 引擎using) 与它可以处理的字符串。

编辑

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

于 2013-08-17T19:49:27.040 回答