scala 变量,集合

 

  var 可变,可重新赋值,赋值为"_"表示缺省值(0, false, null),例如:

 

	                var d:Double = _ // d = 0.0
			
			var i:Int = _ // i = 0
			
			var s:String = _ // s = null

 

 

val不可变

 

    val (x,y) = (10, "hello")

 

 

def 实时返回结果变量,可作为方法返回结果,方便使用

 

def t = System. currentTimeMillis // 每次不一样

 

 

类型转化:

1强转换

 

var i = 10.asInstanceOf[Double] //类型强制
println(i)
println(List('A','B','C').map { x => (x+32).asInstanceOf[Char] })

 在强转换Array[Object]到Array[String]则会报错,建议arr.map{x=>x.toString//加上的处理什么的}

 

2.implicit隐式转化

 

  implicit def typeConvertor(input:Int):String = input.toString

  implicit def typeConvertor(input:Boolean):String = if(input) "true" else "false"

 

    display("1212")
    display(12)
    display(true)

 

 

3.表示Array转为普通序列

  val options = parse(args2:_*)

 

  def parse(x:Int*) = {
    for(i <- x)
      println(i)
  }

 

 

----

集合

集合map方法:

 

//transation的map方法,seq,list,map...
    var arr1 = Seq(1,2,3,4,5)
    var maparr = arr1.map(p=>{
      p+10
    })

 

 

1.List是不可变的,Tuple可以包含不同元素

var arr2 = List(1,2,3,4,5,1)
println(arr2.map { case(a) => a+1})

2.Map

    var maptest = Map(1->2,3->4,5->6,1->5)
    println(maptest.map{case(k,v)=>k})

 

    //map 1是key,2是value
    println(maptest.map(_._1))
    println(maptest.map(_._2))

 

3.Seq 去重集合

     println(arr2(0))
     println(arr1(0))
     println((1,2,3)._1)
     var ttt = Set(1,2,3)
     ttt+=1

 

4.Array定长集合,可变内容,不变长度,和java交互式,一般集合转为此类

var pathList = new Array[String](list.size())
    for(i <- 0 to list.size()-1){
      pathList(i)=list.get(i)
    }
    pathList = pathList.map { x => path+pathSeperate+x }

 

5.ArrayBuffer 变长变内容的集合

private var cis=ArrayBuffer[(String,Option[ZkDTState],Option[String],Option[Array[String]])]();

  

    for(po <- list){
      var stat = readContent(zkclient,po._1+pathSeperate+pathContent,po._2)
      var nodes = readchildNodesInfo(zkclient, po._1+pathSeperate+pathNodes)
      var active = readChildActiveNodeInfo(zkclient, po._1+pathSeperate+pathActive)
      cis.+=((po._1,stat,active,nodes))
    }

 

6.集合的filter,groupBy方法:

 

println("相同的arr2元素分到一个组,并过滤大于1"+arr2.groupBy(groupm).filter{case(a,b) => (a>1)}.keys)

 groupBy方法按照函数参数groupm分组

 

  def groupm[A](x:A):A=x;

 将相同的元素分到一个组里,返回map[Int,List[Int]]

filter方法,(a,b),a是groupBy返回的值Int,b是集合arr2中相同的元素集合List[Int]

最终过滤值大于1的,获得map的key

这一行的作用是去重

 

 

 

 

 

 

 

 

【轴承故障诊断】加权多尺度字典学习模型(WMSDL)及其在轴承故障诊断上的应用(Matlab代码实现)内容概要:本文介绍了加权多尺度字典学习模型(WMSDL)在轴承故障诊断中的应用,并提供了基于Matlab的代码实现。该模型结合多尺度分析与字典学习技术,能够有效提取轴承振动信号中的故障特征,提升故障识别精度。文档重点阐述了WMSDL模型的理论基础、算法流程及其在实际故障诊断中的实施步骤,展示了其相较于传统方法在特征表达能力和诊断准确性方面的优势。同时,文中还提及该资源属于一个涵盖多个科研方向的技术合集,包括智能优化算法、机器学习、信号处理、电力系统等多个领域的Matlab仿真案例。; 适合人群:具备一定信号处理和机器学习基础,从事机械故障诊断、工业自动化、智能制造等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①学习并掌握加权多尺度字典学习模型的基本原理与实现方法;②将其应用于旋转机械的轴承故障特征提取与智能诊断;③结合实际工程数据复现算法,提升故障诊断系统的准确性和鲁棒性。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注字典学习的训练过程与多尺度分解的实现细节,同时可参考文中提到的其他相关技术(如VMD、CNN、BILSTM等)进行对比实验与算法优化。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值