我想整合功能如下:
在我的代码中,我定义了一个指标函数如下:
PConstFundingRange=[0:0.25:2,Inf];
PConstFunding=[0,TempFundingInitialPara,0]; % Note that TempFundingInitialPara is constant for each interval)
FundingInitial=@(t)...
arrayfun(@(s)PConstFunding(find(s<PConstFundingRange,1,'first')),t);
定义了函数后,我定义了另一个函数:FundingInitial
:
FundingInitialTerm=...
@(T,t)arrayfun(@(s1,s2)integral(FundingInitial,s1,s2),t,T);
我的目标是输入两个向量:vec1=[1,2]'
和vec2=[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9]
并计算给定函数f(s)
的积分,如下所示:
因此,我使用以下代码:
bsxfun(@(T,t)FundingInitialTerm(T,t),Vec1',Vec2)
但是,它会输出以下错误消息:
使用
arrayfun
时出错
所有输入参数必须具有相同的大小和形状。
以前的输入在尺寸1上的尺寸为1.输入#3的尺寸为41
如何解决这个问题?
答案 0 :(得分:0)
这样可以计算积分:
f= @(s) sqrt(s);
vec1=[1,2] ; vec2=[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9];
[V2,V1]=meshgrid(vec2,vec1);
arrayfun(@(low,up) integral(f,low,up),V2 ,V1)