Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab:cumsum或cumtrapz哪个适合时间积分?_Matlab_Integral_Cumsum - Fatal编程技术网

Matlab:cumsum或cumtrapz哪个适合时间积分?

Matlab:cumsum或cumtrapz哪个适合时间积分?,matlab,integral,cumsum,Matlab,Integral,Cumsum,我有一个时变信号(即脉冲),我需要计算时间积分(在整个脉冲上积分),然后计算最大/最终积分值 为了研究合适的函数,我在MATLAB中定义了一个方波: t=0:0.1:10; x=square(t); 振幅在-1和+1之间变化(x的长度为101) 如果我绘制a=cumsum(x)和b=cumtrapz(t,x)我会发现类似的形状(锯齿)图,但是 最高(a)=33 及 最大值(b)=3.2 我不确定使用哪一个是合适的积分终值(最大值)?简短的回答是trapz或cumsum(x)/samplerat

我有一个时变信号(即脉冲),我需要计算时间积分(在整个脉冲上积分),然后计算最大/最终积分值

为了研究合适的函数,我在MATLAB中定义了一个方波:

t=0:0.1:10;
x=square(t);
振幅在-1和+1之间变化(x的长度为101)

如果我绘制
a=cumsum(x)
b=cumtrapz(t,x)
我会发现类似的形状(锯齿)图,但是

最高(a)=33

最大值(b)=3.2


我不确定使用哪一个是合适的积分终值(最大值)?

简短的回答是
trapz
cumsum(x)/samplerate(在您的情况下为0.1)
,因为cumsum所做的就是添加每个样本(在0.1t处),所以在t=1时,在您的情况下,添加10个样本,10或-10这是错误的,因为采样率是0.1而不是1.ah是的!谢谢cumsum(x)/(1/ts),其中ts=0.1给出max(a)=3.3是,但请注意,这是采样率,而不仅仅是1/t,它是介于t=0:0.1:10*之间的数字。我的意思是cumtrapz而不是Trapz。可能应该注意,使用cumtrapz的方法使用梯形方法进行积分,使用cumsum/samplerate的方法对应于Euler方法(Riemann sum). 而梯形更为精确。