2014-11-14 38 views
0

我想創建一個for循環來運行我的程序並調出我創建的函數程序。我已經成功地讓它運行,但現在我想再簡化一步,通過將y定義爲兩個函數的向量而不是y1和y2來縮短我的程序。我試着用裏面的函數創建一個2單元陣列,但這是一個失敗的努力。這是我的。如何將y指定爲Matlab中2個函數的向量?

f =cell(size(a)); 
f(1) =[@(t) 4*t]; 
f(2) =[@(t) 20+(5-t).^2]; 

任何關於將這2個組織成矢量的建議,以便單個輸入y?

+1

嗨柯爾特所以沒有任何答案提供幫助您? – 2014-11-16 16:26:19

回答

2

,如果你使用什麼樣的一個單元陣列,而不是:(!感謝@rayryeng)

f =cell(2,1); 

f(1) ={@(t) 4*t}; %// Note the curly braces 
f(2) ={@(t) 20+(5-t).^2}; 

或者使用以下,使用電池陣列哪個更直觀。用花括號分配單元格的內容,而不是像上面那樣做相反的事情。

f{1} [email protected](t) 4*t; 
f{2} [email protected](t) 20+(5-t).^2; 

celldisp(f) 

f{1} = 

    @(t)4*t 



f{2} = 

    @(t)20+(5-t).^2 
+0

小調。要訪問每個元素,請使用大括號'{}'。單元陣列的圓括號一次用於切片或訪問單元組。 – rayryeng 2014-11-14 19:14:09

+0

是的,謝謝你指出了!實際上,我將每個函數都分配在花括號內(在作業的右側),但是我猜這有點不直觀。將編輯。 – 2014-11-14 19:16:42

+1

@Colt事實上,[documentation](http://es.mathworks.com/help/matlab/ref/function_handle.html)(參見「提示」)說「不支持標準矩陣或函數句柄數組」 。你需要使用其他類型的數組,例如單元陣列, – 2014-11-14 19:16:52

1

另一種可能性是定義一個矢量值函數,它的成分是你的兩個功能:

f1 = @(t) 4*t; 
f2 = @(t) 20+(5-t).^2; 
f = @(t) [f1(t) f2(t)]; 

因此,例如

>> f(2.5) 
>> ans = 
     10.0000 26.2500 
相關問題