声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4387|回复: 7

[编程技巧] 请问怎样可以求一个时间序列的有效值,有没有现成函数

[复制链接]
发表于 2006-10-9 20:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
求教有效值计算方法
回复
分享到:

使用道具 举报

发表于 2006-10-9 21:05 | 显示全部楼层
按定义求吧,应该不难的
 楼主| 发表于 2006-10-10 14:56 | 显示全部楼层
知道了,谢谢,已经搞定,如果谁要,我可以给他代码
发表于 2006-10-10 16:08 | 显示全部楼层
把解决方法贴出来,呵呵,其实简单的咯
 楼主| 发表于 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);

评分

1

查看全部评分

发表于 2009-3-18 10:21 | 显示全部楼层
你这个应该求不出一个时间序列的有效值吧

评分

1

查看全部评分

发表于 2012-12-20 14:50 | 显示全部楼层

这个代码太复杂了吧
第一,调用函数的时候不需要定义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);

评分

1

查看全部评分

 楼主| 发表于 2013-7-3 23:37 | 显示全部楼层
448755083 发表于 2012-12-20 14:50
这个代码太复杂了吧
第一,调用函数的时候不需要定义n,万一定义的n和实际data的数据长度不一致还可能产 ...

你的简化是错的。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-28 23:05 , Processed in 0.097028 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表