2015-03-19 144 views
0

我有集成嵌套函數的一個問題處理在Matlab:MATLAB積分函數處理嵌套

fun = @(x,y) 2*x*y; 
    y = @(x,a) 5*a*x; 
    int = integral(@(x)fun(x,y(x,5)),0,2) 

實際嵌套的不斷深入和實際功能也越來越複雜,但是這個例子相當多描述了我的問題,會拋出「使用* 錯誤內部矩陣尺寸必須一致。'

回答

1

這個問題的原因是MATLAB試圖向你傳遞一個向量,期望你的函數返回一個向量值。試試這個(請注意使用逐點產品):

fun = @(x,y) 2*x.*y; 
y = @(x,a) 5*a.*x; 
int = integral(@(x)fun(x,y(x,5)),0,2) 

這本來自相關MATLAB文件摘錄:

對於標值的問題,函數y = fun(x)必須接受一個向量參數,x,並返回矢量結果,y。這通常意味着樂趣必須使用數組運算符而不是矩陣運算符。例如,使用。*(times)而不是*(mtimes)。如果將'ArrayValued'選項設置爲true,則fun必須接受標量並返回固定大小的數組。

+0

非常感謝。它適用於點明智的產品 – Manuel 2015-03-19 13:13:23