`
翻晒时光
  • 浏览: 9262 次
文章分类
社区版块
存档分类
最新评论

Java调用MatLab进行FFT运算及滤波

阅读更多
1、使用MatLab2015b生成Jar包时,需要使用JDK1.7,使用1.8会报错;
2、使用MatLab做FFT运算代码
Java代码:
public double[] FFT(double[] input) {
        try {
            MWNumericArray para = new MWNumericArray(input, MWClassID.DOUBLE);
            Object[] result = tool.FFT(1, para);
            MWNumericArray b = (MWNumericArray) result[0];
            return b.getDoubleData();
        } catch (Exception e) {
            System.out.println("FFT失败!");
        }
        return input;
    }

MatLab代码
function [ output ] = FFT( input )
    N=length(input); %样点个数
    output=abs(fft(input(1:N))/N*2);%真实的幅值
end
3、使用MatLab做滤波
     /**
     * 生成滤波器
     * @param stop
     * @param pass
     * @return
     */
    public Object getFilter(int stop, int pass) {
        try {
            MWNumericArray stopA = new MWNumericArray(Double.valueOf(stop), MWClassID.DOUBLE);
            MWNumericArray passA = new MWNumericArray(Double.valueOf(pass), MWClassID.DOUBLE);
            Object[] result = tool.GetFilter(1, stopA, passA);
            return result[0];
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("getFilter失败!");
        }
        return null;
    }

    /**
     * 滤波
     * @param input
     * @return
     */
    public double[] Filter(double[] input) {
        try {
            if (filter == null) {
                filter = getFilter();
            }
            MWNumericArray para = new MWNumericArray(input, MWClassID.DOUBLE);
            Object[] result = tool.Filter(1, filter, para);
            MWNumericArray b = (MWNumericArray) result[0];
            return b.getDoubleData();
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("FilterHP10失败!");
        }
        return input;
    }

MatLab代码:
function [ output ] = GetFilter( input1,input2 )
    Fs = 15625;
    Fstop = input1;              % Stopband Frequency
    Fpass = input2;             % Passband Frequency
    Dstop = 0.001;           % Stopband Attenuation
    Dpass = 0.057501127785;  % Passband Ripple
    dens  = 20;              % Density Factor
    [N, Fo, Ao, W] = firpmord([Fstop, Fpass]/(Fs/2), [0 1], [Dstop, Dpass]);
    b  = firpm(N, Fo, Ao, W, {dens});
    output = dfilt.dffir(b);
end

function [ output ] = Filter(filterimpl, input)
    output=filter(filterimpl,input);
end
分享到:
评论

相关推荐

    the-matlab-of-data-processing.zip_SFFT_fft 滤波_小波信号滤波_小波滤波

    在MATLAB中,`fft`函数是进行FFT运算的基础。通过调用`fft`,我们可以迅速得到信号的频域表示,这对于分析信号特性、进行频谱分析以及设计滤波器至关重要。 接着,SFFT(Stabilized Fast Fourier Transform)是FFT...

    基于MATLAB的FFT算法的设计.zip

    MATLAB的`fft`函数可以对一维或二维甚至多维数组进行运算,适用于各种复杂信号的分析。例如,对于一维信号,我们首先需要将连续信号离散化,然后使用`fft`函数进行变换。在MATLAB中,一个简单的例子是: ```matlab ...

    MATLAB-FFT.zip_matlab的fft实例_傅里叶变换

    1. **基本用法**:在MATLAB中,调用`fft`函数对一维数组进行FFT计算。例如,如果`x`是输入信号向量,可以使用`y = fft(x)`获取其离散傅里叶变换结果。 2. **对称性**:对于实数输入,`fft`的结果`Y`具有对称性,...

    fft.rar_fft matlab_fft数值_数值分析_数值分析 MATLAB

    在MATLAB中,`fft`函数是最常用的进行一维FFT运算的工具。它能对给定的复数或实数序列进行离散傅立叶变换。对于实数序列,MATLAB的`fft`函数会自动利用奇偶分离的策略,这样可以进一步提高效率。 奇偶分离是FFT算法...

    用matlab进行FFT及DFT算法的实现,并测试其运行速度。

    2. **实现FFT**:MATLAB的内置`fft`函数直接调用了高效的FFT算法,如下所示: ```matlab X = fft(x); ``` 3. **测试运行速度**:为了对比DFT和FFT的性能,我们可以使用`tic`和`toc`函数来测量运行时间。创建两个...

    matlab-基于FFT变换的RLS自适应滤波的设计与实现-源码

    4. **使用FFT**:在处理过程中,通过调用MATLAB的`fft`函数进行快速傅里叶变换,将时域信号转换为频域。 5. **循环处理**:在每个时间步长,应用RLS算法更新滤波器系数,并计算新的滤波输出。 6. **性能评估**:...

    fft.rar_FFT 频移_fft matlab_fft 频移 matlab_matlab fty if_频移

    本压缩包中的资源是关于在MATLAB环境下进行FFT频移操作的相关程序,包括`ifty.m`、`fty.m`、`iftx.m`和`ftx.m`四个文件。 1. **FFT变换**:FFT是DFT的一种优化算法,它将DFT的时间复杂度从O(N^2)降低到O(N log N),...

    fft_fft_matlab_

    标题中的"fft_fft_matlab_"表明我们关注的主题是关于快速傅里叶变换(FFT)在MATLAB环境中的应用。FFT是一种高效计算离散傅里叶变换(DFT)的方法,广泛用于信号处理、图像分析、音频处理等多个领域。MATLAB作为一种强大...

    FFT实例.rar_fft_fft实例_matlab傅里叶转换实例_matlab的fft实例

    3. **实例代码**:提供了实际的MATLAB代码,演示了如何读取数据,进行预处理,然后调用`fft`函数进行傅里叶变换,并对结果进行解析和可视化。 4. **频谱分析**:可能包括如何解析傅里叶变换结果,识别信号的频率...

    matlab-fft简易频谱分析

    在MATLAB中,快速傅里叶变换(FFT)是一种常用的方法,用于对信号进行频谱分析。本教程主要关注如何使用FFT对时域信号x(t)进行简单的频谱分析。"matlab-fft简易频谱分析"这个项目,旨在帮助初学者理解如何利用MATLAB...

    DIF_FFT_correct_fft_fftbutterfly_蝶型运算_

    描述中提到的是通过MATLAB进行FFT蝶型运算结构的仿真,并对比了自定义实现与MATLAB内置FFT函数的结果。 快速傅里叶变换(FFT)是一种高效计算离散傅里叶变换(DFT)的算法,广泛应用于信号处理、图像分析、音频处理...

    FFT运算C语言基2蝶形运算程序

    这个C语言编写的FFT程序经过验证,其计算结果与MATLAB中的FFT函数一致,这意味着它正确地实现了Cooley-Tukey算法。在实际应用中,这样的程序可以用于信号处理、图像分析、数字滤波等多个领域,具有广泛的价值。

    算法导论 多项式FFT Matlab实现

    首先,将n个复数序列分为两半,对每半分别进行FFT,然后通过一个称为“蝶形运算”的简单步骤将结果组合起来。这个过程的关键在于递归的应用和使用偶奇相位的概念。在多项式乘法中,每个系数对应一个复数,多项式被...

    基二fft快速算法的matlab代码

    总的来说,这些MATLAB代码实现了基二FFT和IFFT算法,包括雷道排序和蝶形运算等关键步骤,可以用于高效地计算序列的离散傅里叶变换及其逆变换。理解并掌握这些算法对于信号处理、图像分析、数字滤波等领域都至关重要...

    fft_fftmatlab源代码_

    在MATLAB中,FFT函数被广泛用来对信号进行频域分析,这在通信、音频处理、图像处理和许多其他领域都有应用。以下是关于FFT和MATLAB源代码的一些关键知识点: 1. **快速傅里叶变换(FFT)**:FFT是一种高效的算法,...

    FFT.rar_fft 逆变换_fft逆变换matlab_傅立叶逆变换_逆变_逆变换函数

    快速傅里叶变换(FFT)是...总的来说,理解FFT和IFFT的基本原理及其在MATLAB中的实现对于进行数字信号处理至关重要。通过对给定的MATLAB代码进行学习和实践,用户可以更好地掌握这一核心技术,并将其应用于实际问题中。

    MATLAB实现FFT

    在本文中,我们将深入探讨如何使用MATLAB进行快速傅里叶变换(FFT)以及它在数字信号处理中的应用。MATLAB是一种强大的数学计算环境,特别适合于数值分析、矩阵运算和信号处理等领域。FFT作为其核心功能之一,是将...

    【老生谈算法】Matlab实现FFT变换程序源码.docx

    【Matlab实现FFT变换程序源码】文档详细介绍了如何在Matlab中进行快速傅立叶变换(FFT),以及如何分析变换结果。以下是对该文档中涉及的知识点的详细解释: 1. **FFT(快速傅立叶变换)**:FFT是一种高效的算法,...

    C语言版fft源码,和matlab运行完全吻合

    描述中提到的"和matlab运行完全吻合"意味着这个C语言版本的FFT源码与MATLAB中的FFT函数得到的结果一致。MATLAB是一个广泛使用的数值计算环境,其内置的`fft`函数是一个非常成熟的实现,因此这个C语言版本的代码经过...

    FFT.rar_FFT 源代码_fft_fft matlab 源代码_谱分析_谱分析fft

    MATLAB提供了内置的`fft`函数用于执行FFT运算。该函数接受一个复数或实数向量作为输入,返回其离散傅里叶变换的结果。在提供的源代码中,我们可以看到如何调用`fft`函数,并结合其他MATLAB工具进行谱分析。 **三、...

Global site tag (gtag.js) - Google Analytics