2012-04-01 63 views
3

你好我是MATLAB的新手,我想知道我怎樣才能讓我的字符串功能。我想以標準Matlab格式的用戶字符串的形式訪問該函數(例如exp(-10*X)-sin(pi*X)-2*tanh(X))。這裏X是變量。然後我想用'低'和'高'變量代替'X'來計算在這些極限下的函數值。我爲此使用了'strrep'。我收到以下錯誤 1)未定義的函數或變量'X'。 2)我看不出「X」是否被替換爲「低」和「高」。Strrep不工作在Matlab中使字符串功能

任何幫助將得到真正的讚賞。 以下是我的代碼。

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 

回答

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 
2

1)未定義函數或變量「X」

如果你看一下input的文檔,它說,在默認情況下,它計算表達式。你需要添加's'的第二個參數來保存一個字符串。

2)我看不到「X」是否與「低」和「高」

你應該輸入sprintf(Flow)而不是sprintf('Flow')取代。後者只會將「Flow」輸出到屏幕上,而前者將輸出Flow的值。

最後,eval功能可能是使用以後當你真正要評估你的表現。

3

用途:

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

這將返回輸入的文本作爲一個MATLAB字符串,不計算表達式。