2016-03-08 44 views
1
  1. 寫一個八度函數來實現f(x) = sin(3x)/(0.4+(x-2)^2)八度:定義一個函數插值數據點

  2. 編寫一個八度腳本,在間隔x = [0,4]的區間內統一採樣f(x) = sin(3x)/(0.4+(x-2)^2)的值之間進行插值。

我很困惑,這是什麼問題是問。我將第一部分解釋爲定義函數fx,可以從任意位置調用該函數以返回給定的x的值f(x),但我不確定是否必須輸入x

對於第二部分,我正確使用interpl函數嗎?

我嘗試:

功能文件fx.m

function fx 

x=(0:0.25:4); 

y = sin(3*x)/(0.4+(x-2))^2 

endfunction 

但這僅返回1個y值。我需要返回9個均勻間隔的樣本。我覺得好像我需要使用for循環莫名其妙......

腳本intpl.m

1; 

yi=interpl(x,y,0.4:0.4:3.6) 

回答

3

我認爲你的老師希望是這樣的:

function y = f(x) 
    y = ....x..... (fill your formula here but use elementwise operations [1]) 
endfunction 

,然後用此功能爲給定範圍:

x = linspace (0, 4, 9); 
y = f(x) 

如果你想在一個文件foo.m中有這個文件,一定不要用函數定義來啓動文件。我通常使用「1」。所以你的腳本foo.m變爲:

1; 
function y = f(x) 
    x = ....; 
endfunction 

x = linspace (...); 
y = f(x) 
plot (x, y) # if you want to plot it 

[1] https://www.gnu.org/software/octave/doc/interpreter/Arithmetic-Ops.html