我想創建一個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?
我想創建一個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?
,如果你使用什麼樣的一個單元陣列,而不是:(!感謝@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
小調。要訪問每個元素,請使用大括號'{}'。單元陣列的圓括號一次用於切片或訪問單元組。 – rayryeng 2014-11-14 19:14:09
是的,謝謝你指出了!實際上,我將每個函數都分配在花括號內(在作業的右側),但是我猜這有點不直觀。將編輯。 – 2014-11-14 19:16:42
@Colt事實上,[documentation](http://es.mathworks.com/help/matlab/ref/function_handle.html)(參見「提示」)說「不支持標準矩陣或函數句柄數組」 。你需要使用其他類型的數組,例如單元陣列, – 2014-11-14 19:16:52
另一種可能性是定義一個矢量值函數,它的成分是你的兩個功能:
f1 = @(t) 4*t;
f2 = @(t) 20+(5-t).^2;
f = @(t) [f1(t) f2(t)];
因此,例如
>> f(2.5)
>> ans =
10.0000 26.2500
嗨柯爾特所以沒有任何答案提供幫助您? – 2014-11-16 16:26:19