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

如何用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日

悬赏问题

  • ¥15 网络科学导论,网络控制
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)