【转载】时域信号的频谱、功率谱和功率谱密度计算

原文地址:http://blog.chinaunix.net/uid-11829250-id-4992257.html

以高斯信号为例,计算幅度谱、相位谱、双边功率谱、双边功率谱密度、单边功率谱、单边功率谱密度。(转载请注明出处)



MATLAB程序代码:

  1. %==========================================================================
    %Name:      spectrum_analysis.m
    %Desc:      以高斯信号为例,求解其频谱、双边功率谱、单边功率谱、双边功率谱密度、
    %           单边功率谱密度,这里高斯信号的半波全宽FWHM=50ps,中心点位于2.5ns处。
    %Parameter: 
    %Return:    
    %Author:    yoyoba([email protected])
    %Date:      2015-4-28
    %Modify:    2015-4-29
    %=========================================================================
    clc;
    clear;
    FWHM=50e-12;            %高斯信号FWHM宽度,为50ps
    time_window=100*FWHM;   %高斯信号的采样窗口宽度,该值决定了傅里叶变换后的频率分辨率
    Ns=2048;                %采样点
    dt=time_window/(Ns-1);  %采样时间间隔
    t=0:dt:time_window;     %采样时间
    gauss_time=exp(-0.5*(2*sqrt(2*log(2))*(t-2.5e-9)/FWHM).^2); %高斯脉冲,中心位于2.5ns处。
    plot(t*1e+9,gauss_time,‘linewidth‘,2.5);
    xlabel(‘Time/ns‘);
    ylabel(‘Amplitude/V‘);
    title(‘Gauss pulse‘);
    %===========以下计算双边谱、双边功率谱、双边功率谱密度=================
    gauss_spec=fftshift(fft(ifftshift(gauss_time)));    %傅里叶变换,并且进行fftshift移位操作。
    gauss_spec=gauss_spec/Ns;   %求实际的幅度值;
    df=1/time_window;               %频率分辨率
    k=floor(-(Ns-1)/2:(Ns-1)/2);    
    % k=0:Ns-1;
    double_f=k*df;   %双边频谱对应的频点

    figure; %幅度谱
    plot(double_f*1e-9,abs(gauss_spec),‘linewidth‘,2.5);
    xlabel(‘Frequency/GHz‘);
    ylabel(‘Amplitude/V‘);
    title(‘double Amplitude spectrum‘);

    figure; %相位谱
    plot(double_f*1e-9,angle(gauss_spec),‘linewidth‘,2.5);
    xlabel(‘Frequency/GHz‘);
    ylabel(‘Phase/rad‘);
    title(‘double Phase spectrum‘);

    figure; %功率谱
    double_power_spec_W=abs(gauss_spec).^2;                 %双边功率谱,单位W;
    double_power_spec_mW=double_power_spec_W*1e+3;          %双边功率谱,单位mW;
    double_power_spec_dBm=10*log10(double_power_spec_mW);   %双边功率谱,单位dBm;
    plot(double_f*1e-9,double_power_spec_dBm,‘linewidth‘,2.5);
    xlabel(‘Frequency/GHz‘);
    ylabel(‘Power/dBm‘);
    title(‘double Power spectrum‘);

    figure; %功率谱密度
    double_power_specD_W=abs(gauss_spec).^2/(df);       %双边功率谱密度,单位W/Hz
    double_power_specD_mW=double_power_specD_W*1e+3;    %双边功率谱密度,单位mW/Hz
    double_power_specD_dBm=10*log10(double_power_specD_mW);%双边功率谱密度,单位dBm/Hz
    plot(double_f*1e-9,double_power_specD_dBm,‘linewidth‘,2.5);
    xlabel(‘Frequency/GHz‘);
    ylabel(‘Power/(dBm/Hz)‘);
    title(‘double power spectrum Density‘);

    %==========以下计算单边谱、单边功率谱及单边功率谱密度=========
    gauss_spec=fft(ifftshift(gauss_time));  %计算单边谱无需fftshift
    gauss_spec=gauss_spec/Ns;       %计算真实的幅度值
    single_gauss_spec=gauss_spec(1:floor(Ns/2));
    single_f=(0:floor(Ns/2)-1)*df;

    figure; %幅度谱
    plot(single_f*1e-9,abs(single_gauss_spec),‘linewidth‘,2.5);
    xlabel(‘Frequency/GHz‘);
    ylabel(‘Amplitude/V‘);
    title(‘single Amplitude spectrum‘);

    figure; %相位谱
    plot(single_f*1e-9,angle(single_gauss_spec),‘linewidth‘,2.5);
    xlabel(‘Frequency/GHz‘);
    ylabel(‘Phase/rad‘);
    title(‘single Phase spectrum‘);

    figure;%功率谱
    double_power_spec_W=abs(gauss_spec).^2;  
    single_power_spec_W=2*double_power_spec_W(1:floor(Ns/2));   %单边功率谱,单位W
    single_power_spec_mW=single_power_spec_W*1e+3;              %单边功率谱,单位mW;
    single_power_spec_dBm=10*log10(single_power_spec_mW);       %双边功率谱,单位dBm;
    plot(single_f*1e-9,single_power_spec_dBm,‘linewidth‘,2.5);  
    xlabel(‘Frequency/GHz‘);
    ylabel(‘Power/dBm‘);
    title(‘single Power spectrum‘);

    figure;%功率谱密度
    double_power_specD_W=abs(gauss_spec).^2/(df);
    single_power_specD_W=2*double_power_specD_W(1:floor(Ns/2));         %单边功率谱密度,单位W/Hz
    single_power_specD_mW=single_power_specD_W*1e+3;                    %单边功率谱密度,单位mW/Hz
    single_power_specD_dBm=10*log10(single_power_specD_mW);             %单边功率谱密度,单位dBm/Hz
    plot(single_f*1e-9,single_power_specD_mW,‘linewidth‘,2.5);
    xlabel(‘Frequency/GHz‘);
    ylabel(‘Power/(dBm/Hz)‘);
    title(‘single power spectrum density‘);



运行结果:

时间: 2024-08-05 02:38:47

【转载】时域信号的频谱、功率谱和功率谱密度计算的相关文章

Python科学计算(二)——正弦信号的时域波形与频谱图

Python科学计算(二)-- 正弦信号的时域波形与频域波形生成.计算与显示 # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as pl import matplotlib import math import random row = 4 col = 4 N = 500 fs = 5 n = [2*math.pi*fs*t/N for t in range(N)] axis_x = np.linspace(

信号的频谱,频谱密度,能力谱区别

人人网上的一篇日志[转] 在北理版信号与系统中,信号可以分成能量信号与功率信号,非周期能量信号具有能量谱密度,是傅立叶变换的平方,功率信号具有功率谱密度,其与自相关函数是一对傅立叶变换对,等于傅立叶变换的平方/区间长度.不能混淆.能量信号是没有功率谱的. 胡广书老师的书上找到这么一段话,“随机信号在时间上是无限的,在样本上也是无穷多,因此随机信号的能量是无限的,它应是功率信号.功率信号不满足付里叶变换的绝对可积的条件,因此其付里叶变换是不存在的.如确定性的正弦函数的付里叶变换是不存在,只有引入了

Python科学计算(两)——时域波形和正弦信号的频谱

Python科学计算(两)-- 时域和频域波形为正弦波形信号生成.计算和显示 # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as pl import matplotlib import math import random row = 4 col = 4 N = 500 fs = 5 n = [2*math.pi*fs*t/N for t in range(N)] axis_x = np.linspace(

时域信号matlab实现

1.利用MATLAB的向量表示法绘制下列连续信号的时域波形. (1) x1(t) = u(t + 2) - u(t - 3) (2) x2(t) = cos(2πt + π/3) (3) x3(t) = (2exp(-t) - exp(-2t))u(t -1) (4) x4(t) = (0.2t - 2)u(t)解: 建立阶跃函数文件Ustep.m, 则Ustep.m文件内容为: function f = Ustep(t) f = (t > 0);    %若t > 0,则阶跃函数为1 (1)

连载8:时域信号相乘相当于频域卷积

时域信号与时频转换方法分析

参考文献: 知乎专栏与信号处理有关的那些东东 作者Mr.括号 https://www.cnblogs.com/BitArt/archive/2012/11/24/2786390.html https://zhuanlan.zhihu.com/p/34989414 原文地址:https://www.cnblogs.com/hhhuang/p/11978815.html

【转载】对C#DateTime的一些扩展,计算周内第一天,最后一天

/// <summary> /// DateTime的一些扩展 /// </summary> public class DateTime2 { /// <summary> /// 得到本周第一天(以星期天为第一天) /// </summary> /// <param name="datetime"></param> /// <returns></returns> public DateTim

频谱、幅度谱、功率谱和能量谱(转载)

频谱.幅度谱.功率谱和能量谱 在信号处理的学习中,有一些与谱有关的概念,如频谱.幅度谱.功率谱和能量谱等,常常让人很糊涂,搞不清其中的关系.这里主要从概念上厘清其间的区别. 对一个时域信号进行傅里叶变换,就可以得到的信号的频谱,信号的频谱由两部分构成:幅度谱和相位谱.这个关系倒还是简单.那么,什么是功率谱呢?什么又是能量谱呢?功率谱或能量谱与信号的频谱有什么关系呢? 要区分功率谱和能量谱,首先要清楚两种不同类型的信号:功率信号和能量信号.我们从一个具体的物理系统来引出能量信号和功率信号的概念.已

频谱、能量信号、功率信号、能量谱、功率谱、及一些定理

频谱反应的是信号的幅度和相位随频率的分布情况,它描述了信号的频域特征.同时,也可以用功率谱和能量谱来描述信号的频域特性.一般来说,周期信号和随机信号是功率信号,而非周期的确定信号是能量信号. 注:随机信号只能用功率谱来描述它的频率特性.由于,无法用确定的时间函数表示,也就无法得到信号是频谱. 能量信号 功率信号 原文地址:https://www.cnblogs.com/htj10/p/8638275.html