zoukankan      html  css  js  c++  java
  • 大毕设-MATLAB-FFT实现

    引用来自:http://blog.csdn.net/sinwel/article/details/8115673

    %仿真参数中的含义

    % Ts 表示间隔Ts时间采样,这个越小越接近连续信号,而实际上不可能真正的仿真连续信号。

    % df 表示变化后频率分量的最小间隔,即频谱中相邻的点间隔频率是多大,你也可以叫它 频率分辨力

    % 为什么df = fs/N-1呢?
    % 因为采样频率 fs=1/Ts,表示的意义是连续信号用fs去采样,得到了
    % 离散的信号,因此实际上的连续信号在这里并没有给出,因为MATLAB不可能做的真正的
    % 连续信号,而且既然采样间隔是Ts,所以时域信号也就只给出间隔Ts的信号,这样可以
    % 刚好满足仿真需求,当然你也可以把时域的信号变为更细,把时间间隔变得更小

    % 也就是说信号的个数是 采样频率的整数倍,确保能够正常才够采样。

    4.fs的选取,根据采样定义,fs>2fmax

    如果信号最高频率分量为10HZ,则采样频率一定要大于或等于20HZ,最好选大点。这样仿真效果明显

    clear all;


        Ts=0.01;
        t=-1:Ts:1;
        %采样信号频率是fs=100;
        fs=1/Ts;
        %原信号频率是10;
        x=5*sin(2*pi*10*t);
        %N是总共的采样点数,N=101;
        N=length(x);
        fx=fft(x);
        %N个点有N-1个间隔;
        df=fs/(N-1);
        %让负频率也显示出来;
        n=-(N-1)/2:(N-1)/2;
        f=n*df;
        subplot(211);
        plot(t,x);
        grid;
        title('原始信号');
        xlabel('时间(t)');
        ylabel('幅度');
        subplot(212);
        plot(f,abs(fftshift(fx))*2/N); 
        grid;
        title('频谱');
        xlabel('频率(hz)');
        ylabel('频率分量');

    % 此外MATLAB中FFT计算结果是一个N点的复数,且第n点表示的含义是
    % 频率为 Fn = (n-1)*Fs/N 的复数值(cos 和 sin的分量)
    % 它的模大小abs就是傅里叶的频谱幅度大小。

    % 关于fftshift这个函数,它的作用是:
    % shift zero-frequency component to center of spectrum.
    % 因为FFT出来的结果是频率0~Fs分布的,如果想看双边频率谱,就需要将频率变为
    % -Fs~0~FS。

  • 相关阅读:
    Implementing a smoothly animated ListBox
    HTML head区的其他设置(转)
    How to: Display a Gradient Fill
    jQuery学习一
    Android中的日历读写操作!!! (转)
    画透明的图片
    How to: Draw Images with Transparency
    EasyTime TV——轻松玩MAC
    IOSproperty's synthesized getter follows Cocoa naming convention for returning 'owned' objects
    IOSButton CurrentTitle and titleLabel 使用
  • 原文地址:https://www.cnblogs.com/luoqingyu/p/6239572.html
Copyright © 2011-2022 走看看