說我有一個函數calculateStuff(x),它將一個標量作爲參數並返回一個標量。MATLAB:如何應用函數分組
說我有一個向量X,我想在X每一個部件上應用calculateStuff,並得到結果的矢量作爲回報,並將其存儲在一個新的向量Y.
顯然Y = calculateStuff(X )是非法的,除了循環之外,有沒有辦法可以做到這一點?
說我有一個函數calculateStuff(x),它將一個標量作爲參數並返回一個標量。MATLAB:如何應用函數分組
說我有一個向量X,我想在X每一個部件上應用calculateStuff,並得到結果的矢量作爲回報,並將其存儲在一個新的向量Y.
顯然Y = calculateStuff(X )是非法的,除了循環之外,有沒有辦法可以做到這一點?
你有三個選擇:
calculateStuff
,以便它可以採取數組和返回數組arrayfun
隱藏循環:Y = arrayfun(@calculateStuff,X)
最Matlab操作會讓你輸入一個矩陣並返回一個矩陣。您應該能夠重新編寫calculateStuff()來獲取矩陣並返回矩陣。這通常比用於循環的快得多。 Matlab中的循環在時間上非常昂貴。
你需要看的東西的種類是正常操作的「點」版本。例如,而不是
y = z * x;
做
y = z .* x;
首先會做一個矩陣乘法,這可能不是你想要的矢量化代碼的時候。第二個是逐元素地乘以z和x。
請參閱here並搜索「點操作」。
是不是所謂的`地圖`? – delnan 2011-02-13 19:40:30