楼主: zdd。。
7210 9

[问答] 求帮忙!!!用R语言怎么对数据进行小波去噪处理 [推广有奖]

  • 0关注
  • 0粉丝

高中生

87%

还不是VIP/贵宾

-

威望
0
论坛币
5 个
通用积分
1.5743
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
641 点
帖子
25
精华
0
在线时间
31 小时
注册时间
2014-11-18
最后登录
2016-5-1

楼主
zdd。。 发表于 2016-4-30 11:21:50 来自手机 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
怎么用R对原始数据进行小波分析得到去噪声后数据呢?很困惑啊,求解答~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:R语言 求帮忙 小波分析 原始数据 求解答

沙发
zdd。。 发表于 2016-4-30 11:27:11 来自手机
急需代码!!

藤椅
sparc10 发表于 2016-4-30 21:18:18
你这个问题提的有点大。。。
有很多种类的小波,一般先根据输入信号的类型选择用哪一种,不同的小波对应的
R代码就千差万别了,以下是我写的一段完整的滤波程序,16个输入信号,16个输出信号,
采用最简单的小波哈尔小波进行最简单的滤波处理:

#定义1级及2级阀值
Threshold1 <- 5
Threshold2 <- 7

#定义1级及2级滤波补偿系数
m1 <- 1
m2 <- 1

#输入原始数据,前16分钟收盘价
close <- c(4024,4024,4002,4009,4012,4014,4010,4009,4012,4003,4004,3993,3997,4000,4000,4001)

#计算2级近似系数
Va2 <- c(
                close[1]+close[2]+close[3]+close[4],
                close[5]+close[6]+close[7]+close[8],
                close[9]+close[10]+close[11]+close[12],
                close[13]+close[14]+close[15]+close[16]
            )

#归一化2级近似系数
Wa2 <- c(
                Va2[1]/2,
                   Va2[2]/2,
                Va2[3]/2,
                Va2[4]/2
           )

#计算2级细节系数
Vd2 <- c(
                close[1]+close[2]-close[3]-close[4],
                close[5]+close[6]-close[7]-close[8],
                close[9]+close[10]-close[11]-close[12],
                close[13]+close[14]-close[15]-close[16]
            )

#以阀值2为门限进行滤波
for (i in 1:4) {
                                if (Vd2[i]>Threshold2)
                                        {
                                                Vd2[i] <- (Vd2[i]-Threshold2)*m2
                                        }
                                else
                                        {
                                                if (Vd2[i]< -Threshold2)
                                                        {
                                                                Vd2[i] <- (Vd2[i]+Threshold2)*m2
                                                        }
                                                else
                                                        {
                                                                Vd2[i] <- 0
                                                        }
                                        }
                        }

#归一化2级细节系数
Wd2 <- c(
                Vd2[1]/2,
                Vd2[2]/2,
                Vd2[3]/2,
                Vd2[4]/2
            )

#计算1级细节系数
Vd1 <- c(
                close[1]-close[2],
                close[3]-close[4],
                close[5]-close[6],
                close[7]-close[8],
                close[9]-close[10],
                close[11]-close[12],
                close[13]-close[14],
                close[15]-close[16]
            )

#以阀值1为门限进行滤波

for (i in 1:8) {
                                if (Vd1[i] > Threshold1)
                                        {
                                                Vd1[i] <- (Vd1[i]-Threshold1)*m1
                                        }
                                else
                                        {
                                                if (Vd1[i]< -Threshold1)
                                                        {
                                                                Vd1[i] <- (Vd1[i]+Threshold1)*m1
                                                        }
                                                else
                                                        {
                                                                Vd1[i] <- 0
                                                        }
                                        }
                        }


#归一化1级细节系数
Wd1 <- c(
                Vd1[1]/sqrt(2),
                Vd1[2]/sqrt(2),
                Vd1[3]/sqrt(2),
                Vd1[4]/sqrt(2),
                Vd1[5]/sqrt(2),
                Vd1[6]/sqrt(2),
                Vd1[7]/sqrt(2),
                Vd1[8]/sqrt(2)
            )

#2级近似分解
a2 <- c(
                Va2[1]/4,Va2[1]/4,Va2[1]/4,Va2[1]/4,
                Va2[2]/4,Va2[2]/4,Va2[2]/4,Va2[2]/4,
                Va2[3]/4,Va2[3]/4,Va2[3]/4,Va2[3]/4,
                Va2[4]/4,Va2[4]/4,Va2[4]/4,Va2[4]/4
           )

#2级细节
d2 <- c(
                Vd2[1]/4,Vd2[1]/4,-Vd2[1]/4,-Vd2[1]/4,
                Vd2[2]/4,Vd2[2]/4,-Vd2[2]/4,-Vd2[2]/4,
                Vd2[3]/4,Vd2[3]/4,-Vd2[3]/4,-Vd2[3]/4,
                Vd2[4]/4,Vd2[4]/4,-Vd2[4]/4,-Vd2[4]/4
           )

#1级细节
d1 <- c(
                Vd1[1]/2,-Vd1[1]/2,
                Vd1[2]/2,-Vd1[2]/2,
                Vd1[3]/2,-Vd1[3]/2,
                Vd1[4]/2,-Vd1[4]/2,
                Vd1[5]/2,-Vd1[5]/2,
                Vd1[6]/2,-Vd1[6]/2,
                Vd1[7]/2,-Vd1[7]/2,
                Vd1[8]/2,-Vd1[8]/2
           )

#重组信号
closenew <- c(1:16)
for (i in 1:16) {
        closenew[i] <- a2[i]+d2[i]+d1[i]
        }

#输出图形
par(lab=c(20,5,7))
plot(close,type="b")
lines(closenew,type="b",col="red")

-----------
希望帮到你

板凳
zdd。。 发表于 2016-5-1 10:55:28
sparc10 发表于 2016-4-30 21:18
你这个问题提的有点大。。。
有很多种类的小波,一般先根据输入信号的类型选择用哪一种,不同的小波对应的 ...
谢谢你的分享!!!我是想利用一些气象指标时间序列的数据,通过小波去噪处理,用去噪声后的数据建立回归模型,那这样的话要用什么方法得到去噪后的数据呢?没学过小波分析,不太懂啊~

报纸
zdd。。 发表于 2016-5-1 10:59:13
zdd。。 发表于 2016-5-1 10:55
谢谢你的分享!!!我是想利用一些气象指标时间序列的数据,通过小波去噪处理,用去噪声后的数据建立回归 ...
我的数据有点多,用这个不太方便,请问还有其它简便一点的方法吗?

地板
zdd。。 发表于 2016-5-1 11:01:14
sparc10 发表于 2016-4-30 21:18
你这个问题提的有点大。。。
有很多种类的小波,一般先根据输入信号的类型选择用哪一种,不同的小波对应的 ...
我的数据有点多,用这个不太方便,请问还有其它简便一点的方法吗?

7
sparc10 发表于 2016-5-1 20:25:53
你说你没学过小波分析,又想用小波去降噪。。。
请原谅我的直白:这个有相当的难度。

起码先看一些小波理论方面的书吧?论坛里就有很多,
气象方面不是我的方向,我不敢乱出主意,
带上你的问题,有目的性的去看去学习,还是很快的。
good luck!

8
zdd。。 发表于 2016-5-1 23:08:11
sparc10 发表于 2016-5-1 20:25
你说你没学过小波分析,又想用小波去降噪。。。
请原谅我的直白:这个有相当的难度。
恩恩!谢谢你的帮忙

9
li.sir 发表于 2022-9-16 23:03:35
你好,请问你的问题解决了吗,我现在也遇到你一样的问题了,能不能帮帮我

10
abelus 发表于 2022-9-19 09:17:44
wavelets等相关的pkg中有小波分析要的各种功能,看看要用到哪些
require(wavelets)就可以开始探索之旅了。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 11:04