java dct变换_Discrete Cosine Transform [DCT] (离散余弦变换)

Discrete Cosine Transform [DCT] (离散余弦变换)

描述:Binarizer是一个Transformer。

离散余弦变换是与傅里叶变换相关的一种变换,它类似于离散傅立叶变换但是只使用实数。离散余弦变换相当于一个长度大概是它两倍的离散傅里叶变换,这个离散傅里叶变换是对一个实偶函数进行的(因为一个实偶函数的傅里叶变换仍然是一个实偶函数)。

参数信息

参数描述

备注

其他

setInputCol

String

DF中待变换的特征,类型为:vector

setOutputCol

String

转换后的类型为:vector

setInverse

Boolean

true:执行反DCT,false:执行正向DCT

默认值:false

程序示例:

def getDataFrame(sparkSession: SparkSession = this.getSparkSession()): DataFrame = {

sparkSession.createDataFrame(Seq(

(0, Vectors.dense(0.0, 1.0, -2.0, 3.0)),

(1, Vectors.dense(-1.0, 2.0, 4.0, -7.0)),

(2, Vectors.dense(14.0, -2.0, -5.0, 1.0))

))

.toDF("id", "features")

}

def execute(dataFrame: DataFrame) = {

//特征名称

var feature = "words"

var feature_new = "words_count_vectorizer"

//设置模型

val dct = new DCT()

.setInputCol("features") //待变换的特征

.setOutputCol("features_dtc") //变换后的特征名称

.setInverse(false) //true:执行反DCT,false:执行正向DCT.默认值:false

//模型测试

var transform = dct.transform(dataFrame)

//show

transform.show(100, 100)

dataFrame.show(false)

}

数据结果:

+---+--------------------+----------------------------------------------------------------+

| id| features| features_dtc|

+---+--------------------+----------------------------------------------------------------+

| 0| [0.0,1.0,-2.0,3.0]|[1.0,-1.1480502970952693,2.0000000000000004,-2.7716385975338604]|

| 1| [-1.0,2.0,4.0,-7.0]| [-1.0,3.378492794482933,-7.000000000000001,2.9301512653149677]|

| 2|[14.0,-2.0,-5.0,1.0]| [4.0,9.304453421915744,11.000000000000002,1.5579302036357163]|

+---+--------------------+----------------------------------------------------------------+

实际应用例子:

离散余弦变换,经常被信号处理和图像处理使用,用于对信号和图像(包括静止图像和运动图像)进行有损数据压缩

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值