我注意到matlab內置函數可以處理標量或矢量參數。例如:如何在MATLAB中矢量化分段周期函數?
sin(pi/2)
ans =
1
sin([0:pi/5:pi])
ans =
0 0.5878 0.9511 0.9511 0.5878 0.0000
如果我寫我自己的函數,例如,分段周期函數:
[foo(0.1) foo(0.15) foo(0.2)]
ans =
0 0.5000 1.0000
但是,如果:
function v = foo(t)
t = mod(t, 2) ;
if (t < 0.1)
v = 0 ;
elseif (t < 0.2)
v = 10 * t - 1 ;
else
v = 1 ;
end
我可以在各個值調用此該函數的輸入是一個向量,它不像內置函數那樣自動向量化:
foo([0.1:0.05:0.2])
ans =
1
在函數的定義中是否有可用的語法,指示如果提供了矢量,應該生成矢量?或者像sin,cos等內建函數檢查它們的輸入類型,如果輸入是矢量,則產生相同的結果?