2016-06-22 154 views
1

我的問題:我寫了一個函數,它使用了varargin語法,這個函數的解釋是here。現在我遇到了如何創建一個可以傳遞給這個函數的參數列表的問題。設置相當於此: 說我有一個功能用可變數量的輸入創建函數參數列表

matrixmult(A, varargin)

其確定任意許多矩陣的積與基質A.現在我想確定A的產物用正矩陣,其中n先前在代碼中設置。它看起來像這樣:

n=4; 
A=eye(5); 
B=ones(5); 
matrixmult(A, ?) 

我必須寫什麼而不是?爲了獲得相同的結果,因爲這:

n=4; 
A=eye(5); 
B=ones(5); 
matrixmult(A,B,B,B,B) 

谷歌並沒有幫助可變輸入總是導致有關如何使用varargin,而不是如何通過它們在某種循環的創建參數的問題。 我嘗試了各種各樣的東西,例如創建一個字符串',B'並重復多次以使用eval(字符串)。 如果這應該是重複的,請標記它。 感謝您的幫助提前。

回答

1

您可以將所有輸入放入單元陣列,然後使用的語法,然後將其作爲多個輸入傳遞給您的函數。

你的情況

所以,像這樣:

% Create n copies of B each within it's own cell array element 
inputs = repmat({B}, [1 n]); 

% Pass all of these B matrices to your function 
matrixmult(A, inputs{:}); 
相關問題