npuwenli 发表于 2006-10-9 20:47

请问怎样可以求一个时间序列的有效值,有没有现成函数

求教有效值计算方法

jimin 发表于 2006-10-9 21:05

按定义求吧,应该不难的

npuwenli 发表于 2006-10-10 14:56

知道了,谢谢,已经搞定,如果谁要,我可以给他代码

jimin 发表于 2006-10-10 16:08

把解决方法贴出来,呵呵,其实简单的咯

npuwenli 发表于 2006-10-17 15:17

源代码如下:
function y=CalcuRMS(data,n)
%计算有效值函数
y=0;
ga(1)=data(1)^2;
ga(2)=data(2)^2;
for i=3:n
    ga(i)=data(i)^2;
    y=y+(ga(i-2)+4*ga(i-1)+ga(i))/6;
end
y=sqrt(y/n);

northperson 发表于 2009-3-18 10:21

你这个应该求不出一个时间序列的有效值吧

448755083 发表于 2012-12-20 14:50

npuwenli 发表于 2006-10-17 15:17 static/image/common/back.gif
源代码如下:
function y=CalcuRMS(data,n)
%计算有效值函数


这个代码太复杂了吧
第一,调用函数的时候不需要定义n,万一定义的n和实际data的数据长度不一致还可能产生错误,可以使用n=length(data);
第二,可以用matlab自带的norm函数来计算可得y=norm(X)/sqrt(n);
第三,循环部分还可以简化。

function y=CalcuRMS(X)
%计算有效值
y=0;
n=length(X);
g=0;
for i=1:n
   g=g+x(i)^2;
end
y=sqrt(g/n);

npuwenli 发表于 2013-7-3 23:37

448755083 发表于 2012-12-20 14:50 static/image/common/back.gif
这个代码太复杂了吧
第一,调用函数的时候不需要定义n,万一定义的n和实际data的数据长度不一致还可能产 ...

你的简化是错的。
页: [1]
查看完整版本: 请问怎样可以求一个时间序列的有效值,有没有现成函数