2015-11-04 130 views
-1

我正在嘗試編寫一個可以是標量和矢量的函數。這個函數應該處理標量,列向量和行向量。我的想法是,我嘗試了一個for循環,但我沒有成功嘗試。Matlab - 使函數與矢量和標量一起工作

function f=funk1(x); 
for i =1:length(x) 
f=exp(-3*x(i).^2)-log(x(i)+0.6)+1/(x(i)-6); 
end 
end 

這隻會返回向量的最後一個值(在我的函數中),但我希望它從我的向量中返回每個值。

回答

1

您錯過了f的索引。去做;

function f=funk1(x); 
for i =1:length(x) 
    f(i)=exp(-3*x(i).^2)-log(x(i)+0.6)+1/(x(i)-6); 
end 
end 
+1

謝謝!不能相信我想念那個! :) – simpan

3

對於這個特定的功能,您可以vectorize,就是做所有的計算元素方面的一次沒有環。您只需要在陣列(logexp是件明智的話)之間施加之前*^/運營商增加一個點:

function f = funk1(x); 
f = exp(-3*x.^2)-log(x+0.6)+1./(x-6); 
end 
+0

像往常一樣,過度的解決方案;)良好的工作! – Adriaan

+0

@Adriaan矢量化永遠不會「結束」! :-P –