3

こんにちは私はMATLABを初めて使用します。文字列を関数にするには、どうすればよいか知りたいと思いました。標準のMatlab形式のユーザーから文字列として関数にアクセスしたい(例exp(-10*X)-sin(pi*X)-2*tanh(X))ここで、Xは変数です。次に、「X」を「low」および「high」変数に置き換えて、これらの制限での関数の値を計算します。私はこの目的のために「strrep」を使用しました。次のエラーが発生します1)未定義の関数または変数「X」。2)「X」が「low」と「high」に置き換えられたかどうかがわかりません。

どんな助けでも本当にありがたいです。以下は私のコードです。

    high=input('Upper Limit of the Interval : ');

    low=input('\nLower Limit of the interval : ');

    usr_funct=input('Enter The Function in standard Matlab Format.\nEnter "X" for the
    variable and * for multiply \n');    % Example exp(-10*X)-sin(pi*X)-2*tanh(X);

    middle = (low+high)/2;

    Flow =strrep(usr_funct, 'X', 'low');
    Fhigh =strrep(usr_funct, 'X', 'high');

   sprintf('Flow '); % This was to check if 'X' was replaced with 'low'. It is not printing anything
4

3 に答える 3

3

使用する:

usr_funct=input('Enter The Function...', 's');

これにより、式を評価せずに、入力されたテキストがMATLAB文字列として返されます。

于 2012-04-01T09:11:40.990 に答える
2

1)未定義の関数または変数'X'

のドキュメントを見ると、inputデフォルトで式を評価していると書かれています。文字列を保存するには、「s」の2番目の引数を追加する必要があります。

2)「X」が「low」と「high」に置き換えられたかどうかがわかりません

sprintf(Flow)の代わりに入力する必要がありsprintf('Flow')ます。後者は画面に「フロー」を出力し、前者はフローの値を出力します。

最後に、このeval関数は、後で実際に式を評価するときに役立つ場合があります。

于 2012-04-01T09:10:41.080 に答える
2

あなたはeval関数を探していると思います。これにより、文字列がmatlabコードとして評価されます。

次に例を示します。

str = 'exp(-10*X)-sin(pi*X)-2*tanh(X)' ; % let str be your math expression
high = 10; % Ask the user
low = -5; % Ask the user

% Now we evaluate for High and Low
X = low; % We want to evaluate for low
ResultLow = eval(str); % That will return your value for X = low
X = high; % We want to evaluate for low
ResultHigh = eval(str); % That will return your value for X = high
于 2012-04-01T09:11:31.940 に答える