2014-03-31 42 views
1

有什麼方法可以使用矩陣來實現函數的MULTIPLE輸入參數?使用單個矩陣作爲函數的多個輸入參數

示例:

x=-10:0.1:10; 
a=[1 2]; 
normpdf(x,a); 

代替 normpdf(X,A(1),(2));

我可以EVAL做到這一點,這樣

for i=1:nargin(@normalpdf)-1 %in order to get parameter size, taking out the first one which for a pdf is usually x 
    if i>1 
     str=[str ',']; 
    end 
    str=[str 'x(' num2str(i) ')']; 
end 
normpdf(x, eval(str)); 

不過,我想知道是否有任何方式做同樣的不使用eval。

編輯:我想說清楚。當然,如果一個矩陣被定義爲fun(a,b),其中b是一個矩陣,這是微不足道的。但是,我可以使用多於一個元素的矩陣,其中每個元素是函數的輸入變量嗎? (比如上例中)等

回答

2

一種選擇是使用電池陣列產生comma separated list

x=-10:0.1:10; 
a={1,2}; 
normpdf(x,a{:}); 
+0

這就是我一直在尋找的。比預期容易得多。謝謝! – Vaaal88

+0

@Vaaal但這樣做真的值得嗎?在選擇此方法之前,您應該仔細考慮可讀性。特別是只有兩個參數。 – Dan

+0

你好丹。我知道這似乎確實是一種不尋常的方式。但是,請考慮此問題: 我想用n參數調用函數。我想要靈活性,所以我可以輕鬆地改變功能。我將使用eval在運行時評估函數。至於參數,我想在運行時評估它們,因爲根據它們可能會改變的功能。 是的,可重複性降低,但靈活性增加了很多。 – Vaaal88

0

如果在製作自己的路線功能的矩陣可以是一個說法。但在這種特定情況下,函數已經被寫入接受標量參數。所以你必須給兩個變量分隔一個(1)和(2)逗號。

相關問題