2011-03-04 33 views
1

我想寫m。文件,如果我在命令窗口中輸入此,將做到以下幾點:寫解決laplace和其他東西的.m類

>> test 
Enter the function: (s^2+6*s+9)/(s^3+2*s^2-s-2) 
The Poles: 
-2 
-1 
    1 

The Zeros: 
-3 
-3 

The Result: 
1/(3*exp(2*t)) - 2/exp(t) + (8*exp(t))/3 

The Initial Value: 
    1 

這裏是我的嘗試:(當然,這是行不通的)在Matlab

function y = f(s) 
y = input('Enter the function: '); 
[n d] = numden(y); 
zeros = solve(n); 
poles = solve(d); 
yt = ilaplace(y); 
disp('The Poles:'); 
disp(poles); 
disp('The Zeros:'); 
disp(zeros); 
disp('The Result:'); 
disp(yt); 
disp('The Initial Value:'); 
disp(f(0)); 

回答

2

功能工作像功能在大多數編程語言:他們期望的輸入參數列表和返回輸出參數列表:

function [out1 out2] = myFunc(in1, in2) 

在你的榜樣,f返回用戶輸入的功能 - 是w ^你想要的帽子?此外,輸入參數x從不使用,因此無用。如果你既不使用輸入參數,也不使用輸出參數 - 那爲什麼要使用函數呢?您可以改用Matlab腳本。

在函數體中,您正在使用從未定義的變量func。你期望它有什麼價值?我想你想要將用戶輸入傳遞給函數numden,該函數需要一個數字或符號矩陣。您必須將用戶輸入轉換爲numden可以理解的內容。請注意,如果您想獲取用戶輸入的字符串,則必須使用選項's'input,否則用戶輸入將被解釋爲Matlab表達式。

+0

所有我需要從使用該函數是找到初始值f(0),我編輯我的代碼,這是我的錯 – 2011-03-04 14:59:34

+0

是的,但「f」是你寫的函數的名稱,而不是一個是用戶給你的,而你函數的返回值是「y」,它就是用戶提供給你的字符串。而且你還沒有使用過函數的輸入值。它是x,然後你編輯它,但無論如何你永遠不會使用這個值。 – 2011-03-04 18:13:13

+0

好的,我該如何解決問題呢? – 2011-03-04 19:02:13