keledd 2021-10-01 13:59 采纳率: 100%
浏览 1026
已结题

如何用matlab对一组数据进行定积分计算

本人有一组200800x700double的rate.mat数据(是一组速度数据),想对这组数据在时间范围为【0-700】内进行定积分计算,以便求出这段时间内的位移。

t=0:200799;    %t取到200799是因为matlab说要和rate的长度相等,即长度应为200800
v=rate;
x=trapz(t,v)

这段代码积出来的数据并不正确,所以对求定积分有了些疑惑。
希望有人可以指导下如何正确的对这组数据进行定积分计算,非常感谢!!

  • 写回答

1条回答 默认 最新

  • joel_1993 2021-10-01 14:28
    关注

    你好,trapz要搞清楚你积分的维度在哪个方向,比如对V = T^2+X^2在x方向积分(即积分消去x留下对t的函数)

    t = 0:1:10;
    x = 0:1:20;
    [T, X] = meshgrid(t,x);
    V = T.^2+X.^2;
    I = trapz(x, V);
    
    
    I =
    
            2670        2690        2750        2850        2990        3170        3390        3650        3950        4290        4670
    

    真实值是

    I = t.^2*(20^1-0^1) + 1/3*(20^3-0^3)
    
    I =
    
       1.0e+03 *
    
        2.6667    2.6867    2.7467    2.8467    2.9867    3.1667    3.3867    3.6467    3.9467    4.2867    4.6667
    

    可见trapz梯形法积分精度还是可以的

    你要对T积分留下X也很简单

    t = 0:1:10;
    x = 0:1:20;
    [T, X] = meshgrid(t,x);
    V = T.^2+X.^2;
    I = trapz(t, V')%V转置一下即可
    

    结果也不差的

    I =
    
      列 1 至 11
    
             335         345         375         425         495         585         695         825         975        1145        1335
    
      列 12 至 21
    
            1545        1775        2025        2295        2585        2895        3225        3575        3945        4335
    

    题主对时间积分,那就是对那每一行的700列作积分:

    t=0:699;    %你是对时间积分应该取时间维度真实的时间【0-700】
    v=rate;
    x=trapz(t,v')
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月9日
  • 已采纳回答 10月1日
  • 创建了问题 10月1日

悬赏问题

  • ¥20 keepalive配置业务服务双机单活的方法。业务服务一定是要双机单活的方式
  • ¥50 关于多次提交POST数据后,无法获取到POST数据参数的问题
  • ¥15 win10,这种情况怎么办
  • ¥15 如何在配置使用Prettier的VSCode中通过Better Align插件来对齐等式?(相关搜索:格式化)
  • ¥100 在连接内网VPN时,如何同时保持互联网连接
  • ¥15 MATLAB中使用parfor,矩阵Removal的有效索引在parfor循环中受限制
  • ¥20 Win 10 LTSC 1809版本如何无损提升到20H1版本
  • ¥50 win10 LTSC 虚拟键盘不弹出
  • ¥30 微信小程序请求失败,网页能正常带锁访问
  • ¥15 Matlab求解微分方程,如何用fish2d进行预优?