在matlab中计算时间平均数据

时间:2013-10-07 11:13:13

标签: matlab average sine

我有一个数据向量(名为ydot)和一个时间向量,当我绘制ydot与时间的关系时,我得到一个像sine函数这样的周期性数字,如何计算时间平均ydot?

以下代码计算ydot和时间的准确值:

T=(2*pi)/(160e6)
tspan=linspace(0,2*T,1500)
current=linspace(0,1e-6,40);
for k=1:length(current)
f = @(y, t) (current(k)/3.2911e-016)-(2.6151e+009)*sin(y)+(4.8448e+008)*sin(y+0.5697)+(5.2266e+008)*sin((160e6)*t)*cos(y);
[t{k}, y{k}] = ode45(f,tspan,2e22);
end
y1=cell2mat(y);
t1=cell2mat(t);
for k=1:length(tspan)
for j=1:length(current)
ydot(k,j)=(current(j)/3.2911e-016)-(2.6151e+009)*sin(y1(k,j))+(4.8448e+008)*sin(y1(k,j)+0.5697)+(5.2266e+008)*sin((160e6)*t1(k,j))*cos(y1(k,j));
end
end

这给出了40个不同电流的ydot,下面的代码将绘制特定电流(k)的ydot /时间(其中k = 1:40):

plot(t1(:,k),ydot(:,k))

2 个答案:

答案 0 :(得分:1)

如果你的意思是假设是一个时间平均值你可以通过取ydot的平均值得到这个

x = 0:0.1:10; % define time
ydot = sin(x); % get some data for ydot
average = mean(ydot); % use mean function to get time average
plot(x, ydot, x, average); % plot both, average (which should be approximately zero for this sine and ydot vs x

如果没有,您需要更清楚地指定任务。

答案 1 :(得分:0)

如果时间值是等距的,那么lhcgeneva的解决方案就可以了。 如果没有,你只需要记下适当的积分,例如:通过trapz:

time_averaged_mean = trapz(time, ydot) ./ (time(end) - time(1));