Java集合类

 Java集合类可分两种,Collection与Map,Collection用于存放多个单对象,Map用于存放key-value键值对类型对象。Collection又可分为List和Set两类,List可存放重复对象,Set中对象不可重复。List常用实现类如:ArrayList,LinkedList,

Vector及Stack;

Set接口常用有:HashSet、TreeSet.

Collection中方法:add、remove、get、iterator、contains

ArrayList:数组方式存放对象,初始大小10,每次扩容当前大小*1.5+1;add(int,E)插入指定位置,其后对象均后移动一位,

set(int,E)可替换指定位置对象;remove(E)遍历数组找到该对象,删除后再将后边对象往前复制一位;contains(E)遍历数组

LinkedList:基于双向链表,集合中每一个元素都知道其前一个元素与后一个元素的位置,add增加元素时不用考虑扩容及复制,

但它每增加一个元素都要新建一个Entry对象并修改相邻两个元素属性;remove遍历寻找后删除,无需位移;get比arrayList更

复杂,首先判断位置是否小于表size一半,若是则从头开始找,否则从尾开始找;contains则遍历整表

Vector:基于数组,但是add、remove、get、contains方法加了synchronized,为线程安全,每次扩容*2

Stack:继承于Vector,在其基础上实现了后进先出(LIFO);push压入调用addElement;pop调用peek来获取元素,并删除数组

最后一个元素;peek通过获取当前Object大小,并获取数组最后一个元素

HashSet:采用HashMap实现元素不重复,add将需要增加的元素作为map的key存入

TreeSet:采用treeMap实现,有序

HashMap:负载因子0.75,初始大小16;put()首先获取key的hashCode,再对hashCode做hash操作,再将hash出来的值

与Entry大小-1的值进行按位与操作,得出存储位置后,获取该位置entry,通过遍历该entry寻找hash值相等,key也相等的

entry对象,并替换其value完成put操作并返回旧的值,如未找到,则在对应数组位置增加新的entry;get与put同理;

当put操作发现Map容量不够将触发resize操作扩大数组容量,重新计算hash并复制对象到新数组中,HashMap是非线程安全的。


并发包concurrent

ConcurrentHashMap:分为16个segment,put先hash算得去哪个segment,再进入该segment调用put,此时需加锁

reentrantlock,余下动作与hashMap一样,完成后unlock;remove也加锁;size()操作遍历所有段,读取count及modcount,

两个均为volatile类型,遍历后再遍历一遍,若两次无差则返回,此操作无加锁

CopyOnWriteArrayList:线程安全,读操作无锁,add通过reentrantLock加锁,每次add均会创建一个新数组,将原数组复制

到新数组,再将新对象放至最末;remove亦加锁并复制







分数阶傅里叶变换(Fractional Fourier Transform, FRFT)是对传统傅里叶变换的拓展,它通过非整数阶的变换方式,能够更有效地处理非线性信号以及涉及时频局部化的问题。在信号处理领域,FRFT尤其适用于分析非平稳信号,例如在雷达、声纳和通信系统中,对线性调频(Linear Frequency Modulation, LFM)信号的分析具有显著优势。LFM信号是一种频率随时间线性变化的信号,因其具有宽频带和良好的时频分辨率,被广泛应用于雷达和通信系统。FRFT能够更精准地捕捉LFM信号的时间和频率信息,相比普通傅里叶变换,其性能更为出色。 MATLAB是一种强大的数值计算和科学计算工具,拥有丰富的函数库和用户友好的界面。在MATLAB中实现FRFT,通常需要编写自定义函数或利用信号处理工具箱中的相关函数。例如,一个名为“frft”的文件可能是用于执行分数阶傅里叶变换的MATLAB脚本或函数,并展示其在信号处理中的应用。FRFT的正确性验证通常通过对比变换前后信号的特性来完成,比如评估信号的重构质量、信噪比等。具体而言,可以通过计算原始信号与经过FRFT处理后的信号之间的相似度,或者对比LFM信号的关键参数(如初始频率、扫频率和持续时间)是否在变换后得到准确恢复。 在MATLAB代码实现中,通常包含以下步骤:首先,生成LFM信号模型,设定其初始频率、扫频率、持续时间和采样率等参数;其次,利用自定义的frft函数对LFM信号进行分数阶傅里叶变换;接着,使用MATLAB的可视化工具(如plot或imagesc)展示原始信号的时域和频域表示,以及FRFT后的结果,以便直观对比;最后,通过计算均方误差、峰值信噪比等指标来评估FRFT的性能。深入理解FRFT的数学原理并结合MATLAB编程技巧,可以实现对LFM信号的有效分析和处理。这个代码示例不仅展示了理论知识在
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值