MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [求助]实验数据的积分处理 (https://www.labfans.com/bbs/showthread.php?t=4137)

hunter_tiger 2008-08-16 09:40

[求助]实验数据的积分处理
 
求助@讨论:一般而言,实验中测得的图形或曲线在后处理时都是以数据的形式进行,能否利用Matlab对这种曲线(数据)进行积分或微分,即求实验曲线的积分或微分?
请赐教!!!

fanxing39 2008-08-16 15:29

回复: 实验数据的积分处理
 
trapz(x,y) %x,y为 n个横坐标,n个列坐标

hunter_tiger 2008-08-17 09:16

回复: 实验数据的积分处理
 
[QUOTE=fanxing39;14715]trapz(x,y) %x,y为 n个横坐标,n个列坐标[/QUOTE]

非常感谢您的答案!
据我所知trapz函数是采用复化梯形公式来求积分,其结果是一个面积的表示,能否求出实验曲线的积分曲线?(我的意思是:将实验中测得的曲线1,以数据的基础,在matlab中绘制出曲线2,如果曲线1和2误差不是很大的话,求曲线2的积分曲线),不知道是否可在matlab中实现,请求支援!!!

xmuhjh 2008-08-18 11:59

回复: 实验数据的积分处理
 
可以参考如下代码:
给出三种方法,前两种计算的是积分结果;
第三种 cumtrapz 计算积分累积分布。

也可以这样考虑:用trapz或者 quad quadl quad8逐点计算出积分结果,然后把结果画出来。

clear;
x=linspace(0,3,30);
y=x;
inter1=trapz(x,y);

inter2=quadl(@integrand,0,3);

inter3=cumtrapz(x,y);

plot(x,inter3);
hold on;

plot(x,y);


function y=integrand(x)

y=x;

hunter_tiger 2008-08-18 14:33

回复: 实验数据的积分处理
 
[QUOTE=xmuhjh;14774]可以参考如下代码:
给出三种方法,前两种计算的是积分结果;
第三种 cumtrapz 计算积分累积分布。

也可以这样考虑:用trapz或者 quad quadl quad8逐点计算出积分结果,然后把结果画出来。

clear;
x=linspace(0,3,30);
y=x;
i...[/QUOTE]

非常感谢!
我用cumtrapz命令进行了一定量的试验,效果不错,但是对较复杂图形而言,误差可能会比较大,我现在有一个想法:能否利用曲线拟合的方法求出拟合方程,再通过simulink进行积分/或直接运用matlab中的命令程序进行较精确的求解,请问这种方法可行否,仿真误差如何?

xmuhjh 2008-08-18 22:54

回复: 实验数据的积分处理
 
可以改进。可能你的数据本身采样的间隔比较大,这样可以增大采样频率,也就是本身的数据间隔小点,当然计算结果更精确了。cumtrapz的原理就是梯形法求积分,相对比较粗糙,如果数据频率比较低,先对数据进行插值拟合的话应该会取得更好的结果。


所有时间均为北京时间。现在的时间是 11:29

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.