代码之家  ›  专栏  ›  技术社区  ›  idladle

如何在Matlab中对矢量数据进行数值积分?

  •  0
  • idladle  · 技术社区  · 7 年前

    我有矢量数据 rdata rho . 每一个都是641 x 1矢量,并且 数据 . 我想把rho(rdata)*2*pi*rdata从0积分到rmax。但是,当我做下面的事情时,我得到的结果是“NaN”。我的设置有误吗?有没有更好的方法在Matlab中对矢量数据进行数值积分?

    % turn data into function
    fr = @(r)interp1(rdata,rho,r);
    
    % integrate
    h = integral(@(r)fr(r)*2*pi*r,0,35.8,'ArrayValued',true);
    

    更新

    我发现了 trapz 函数并尝试下列操作

    dens = 2*pi*rho.*rdata;
    trapz(rdata,dens)
    

    得到了一个2.5左右的数值,比我预期的要低两个数量级。我执行的不对吗? 数据 间距不均匀,如果这很重要的话。

    0 回复  |  直到 7 年前