5、算法-综合以上4步进行总和

数组实现栈

package base.第一章.背包_队列_和栈.数组实现定容栈;

import java.lang.Iterable;
import java.util.Iterator;

/**
 * Created by MK on 2018/7/31.
 * 现在我们就通过上面所学的迭代,来重新定义下压栈
 * {
 * 这份泛型的可迭代的Stack  API的实现是所有集合类(实现了 implements Iterable<Item>)抽象数据(Item)类型实现的模板,它将
 * 所有的元素保存到数组中,并动态的调整数组的大小以保持数组大小和栈大小之比小于一个常数。
 * }
 */
public class 数组实现Stack_栈<Item> implements Iterable<Item> {

    //创建容量数组;默认长度为1,该长度会动态调整。(即栈元素)
    private Item[] a = (Item[]) new Object[1];
    private int N = 0; //元素数量

    public Boolean isEmpty() {
        return N == 0;
    }

    public int size() {
        return N;
    }

    //复制数组
    public Item[] resize(int max) {
        Item[] item = (Item[]) new Object[max];
        for (int i = 0; i < N; i++) item[i] = a[i];
        return a = item; //将老数组变为新数组
    }

    //往栈中压入元素
    public void push(Item item) {
        if (N == a.length) resize(2 * a.length);
        a[N++] = item;

    }

    //从栈顶开始删除元素
    public Item pop() {
        Item item = a[--N];
        a[N] = null; //此时的N是--N后的N,为null避免游离
        if (N > 0 && N == a.length / 4) resize(a.length / 2);
        return item;
    }


    public Iterator<Item> iterator() {
        return new ReverseArrayIterator();
    }

    private class ReverseArrayIterator implements Iterator<Item> {

        private int i = N;

        public boolean hasNext() {
            return i > 0;
        }

        public Item next() {
            return a[--i];
        } //支持后进先出的迭代

        public void remove() {
        }
    }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: FFT总和法特征提取算法是一种基于快速傅里叶变换的特征提取算法。它适用于信号处理、图像处理等领域。 具体来说,该算法将信号分为若干段,对每一段信号进行快速傅里叶变换,然后将其幅度谱进行求和,得到一个总和谱。总和谱中的每一个频率点都代表了原始信号在该频率下的能量大小。因此,可以将总和谱作为原始信号的特征向量,用于分类、识别等任务。 该算法的优点是计算速度快,能够处理大量数据。缺点是需要选择合适的窗函数和傅里叶变换的段数,以及对特征向量进行归一化等后续处理。 ### 回答2: FFT总和法特征提取算法是一种基于傅里叶变换的信号分析方法,其原理是将时域信号转换为频域信号,通过计算频域信号的频谱特征来提取信号的有用信息。该算法骤主要包括以下几个方面: 1. 信号预处理:对原始信号进行预处理,例如去除噪声、滤波等。 2. 傅里叶变换:通过对预处理后的信号进行傅里叶变换,将信号从时域转换为频域。 3. 频谱分析:对变换后的频域信号进行频谱分析,通过计算信号的幅度谱、相位谱等特征来获取信号的频率分量信息。 4. 频谱整合:对频谱分析得到的幅度谱进行整合,即将频率范围内的振幅值进行加和,得到每个频段的能量值。 5. 特征提取:根据整合后的频谱特征,提取出有用的特征信息,例如频率峰值、主要频率成分等。 6. 数据处理:根据特征提取的结果进行进一的数据处理,例如统计分析、模式识别等。 FFT总和法特征提取算法的优点是可以通过傅里叶变换将信号从时域转换为频域,更好地分析信号的频率特征;同时由于信号的频谱特征在频域上分布相对稳定,所以可以较好地提取出信号的重要频率成分。缺点是该算法对信号的长度、采样率等要求较高,处理复杂度较大,且对信号的非线性特征分析相对较弱。 总之,FFT总和法特征提取算法是一种常用的信号分析方法,通过傅里叶变换将信号转换为频域信号,并通过频谱分析和整合来提取信号的频率特征,进而进行进一的数据处理和分析。 ### 回答3: FFT(Fast Fourier Transform)总和法特征提取算法是一种通过将输入信号转换到频率域,利用频域特征来描述信号的算法。 该算法的主要骤如下: 1. 将输入信号进行FFT变换,将时域信号转换为频域信号。 2. 根据FFT变换后的结果,计算频谱幅度,并将频谱幅度进行归一化处理。 3. 利用归一化后的频谱幅度,计算频谱的特征参数。常见的特征参数包括能量、频率峰值、频谱熵等。这些特征参数可以反映信号的能量分布情况、频率特征以及信号的复杂程度。 4. 将特征参数进行总和,得到一个综合的特征向量,作为输入信号的特征描述。 5. 可以根据需要对特征向量进行进一处理和分析,例如通过聚类算法进行分类、通过机器学习算法进行模式识别等。 FFT总和法特征提取算法具有以下优点: 1. 能够提取信号的频率特征,对于周期性信号,可以很好地反映出其频率分量和能量分布情况。 2. 可以通过调整FFT的参数,例如窗函数的选择、采样频率等,来适应不同类型的信号。 3. 算法简单、计算速度快,适用于实时信号处理。 然而,该算法也存在一些缺点: 1. 由于FFT变换是基于离散采样的,因此对于非周期信号或者信号长度不够的情况下,可能会导致频谱分辨率不够高,无法准确提取信号的频率特征。 2. 由于频谱特征是通过总和法计算得到的,对于具有多个频率成分的信号,可能会导致特征提取的结果混淆。 总的来说,FFT总和法特征提取算法是一种简单且有效的信号处理方法,适用于对周期性信号进行频率特征提取和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值