【问题标题】:What's wrong with the use of arrayfun and bsxfun?使用arrayfun和bsxfun有什么问题?
【发布时间】:2016-08-29 02:53:16
【问题描述】:

我想集成如下功能:

在我的代码中,我定义了一个指标函数如下:

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

如何解决这个问题?

【问题讨论】:

    标签: matlab


    【解决方案1】:

    这样可以计算积分:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-22
      • 2017-06-14
      • 1970-01-01
      • 1970-01-01
      • 2015-01-16
      • 2011-03-08
      • 2011-01-09
      相关资源
      最近更新 更多