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

オーバーロードされた function の 2 つの異なる使用法の間に競合が見られますdiff。デフォルトの組み込み使用は数値微​​分であり、関数を数値変数に適用しているyため、数値出力が得られます。

あなたがしたいことはdiff、シンボリック数学ツールボックスから表示5*x^4するために使用することです。これには、diff に適切な入力 (通常は文字列) を提供して、シンボリック数学ツールボックスを使用することを matlab に伝える必要があります。

私はmatlab R14を使用しており、新しいバージョンのsymツールボックスで多くの変更がありましたが、次のように動作するはずです.

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

wherestrは記号的に微分したい式です。私のバージョンでは、sym ツールボックスは記法に不満があり、x.^5を好むことに注意x^5してください。MuPad でどのように動作するかはわかりませんが、MuPad (または使用している sym エンジン) を確実にフィードするための回避策を見つける必要があるかもしれません。を使用して、処理可能な文字列を使用します。

編集

オーバーロードされた関数のどのバージョンを使用するcdかを制御するための使用に関する以前の提案は削除されました。addpathdiff

于 2013-08-17T19:49:27.040 に答える