时域信号的频谱、功率谱和功率谱密度计算
以高斯信号为例,计算幅度谱、相位谱、双边功率谱、双边功率谱密度、单边功率谱、单边功率谱密度。(转载请注明出处)
MATLAB程序代码:
- %==========================================================================
%Name: spectrum_analysis.m
%Desc: 以高斯信号为例,求解其频谱、双边功率谱、单边功率谱、双边功率谱密度、
% 单边功率谱密度,这里高斯信号的半波全宽FWHM=50ps,中心点位于2.5ns处。
%Parameter:
%Return:
%Author: yoyoba(stuyou@126.com)
%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');
运行结果:
http://blog.chinaunix.net/uid-11829250-id-4992257.html
spectrum_analysis.rar
时域信号的频谱、功率谱和功率谱密度计算相关推荐
- 快速傅里叶变换功率谱密度matlab_[转载]Matlab实例:频谱、功率谱和功率谱密度计算...
%================ %作者:yoyoba %Email:stuyou@126.com %================ clc; clear; FWHM=50e-12; %高斯信号F ...
- matlab中功率谱密度,功率谱和功率谱密度
宋老师,您好: 1.关于语音信号,求功率谱和功率谱密度,是不是一样的,没有区别的? 2.看到您书中求取功率谱密度(p28)用的是pwech方法.看到还有用spectrogram函数,用[S,F,T,P ...
- 软件定义无线电的实时频谱分析仪相关原理介绍(一)——信号与频谱
缩略语表 ADC – Analog Digital Converter,模数转换器 DAC – Digital Analog Converter ,数模转换器 DSP – Digital Signal ...
- 用Matlab进行时域信号的频谱分析
傅立叶变换是一种线性的积分变换,常在将信号在时域(或空域)和频域之间变换时使用,在物理学和工程学中有许多应用.因其基本思想首先由法国学者约瑟夫·傅里叶系统地提出,所以以其名字来命名以示纪念.在不同的研 ...
- Matlab中频谱、功率谱、功率谱密度的关系以及如何求信号的功率
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Matlab中频谱.功率谱.功率谱密度的关系 一.频谱.功率谱.功率谱密度 二.MATLAB中求信号的功率 Matlab中频 ...
- 学习通信原理之——从实验中理解频谱/功率谱/功率谱密度(MATLAB演示)
我的个人博客文章链接如下:学习通信原理之--从实验中理解频谱/功率谱/功率谱密度(MATLAB演示) 前言 最近在复习通信原理,每次到了功率谱这一块就感到困惑,每次都要去查,我觉得不能再这样循环下去了 ...
- 频谱 功率谱 功率谱密度
频谱是个很不严格的东西,常常指信号的Fourier变换: 功率谱是一个时间平均(time average)概念: 功率谱的概念是针对功率有限信号的(能量有限信号可用能量谱分析),所表现 ...
- matlab信号的能量谱代码,信号的频谱 频谱密度 功率谱密度 能量谱密度
这是我在知乎上的一个回答,鉴于很多朋友对这几个概念不是很清楚,就在公众中发一下. 这几个概念,对于刚学信号系统的同学甚至对于很多信号处理的老手来说,都是分不清楚的,下面我们就一一解释这几个概念. 要解 ...
- 信号--频谱--功率谱--能量谱
1.信号分为能量信号和功率信号 一个普通信号x(t),那么信号的功率Px 在时间T内,信号的能量表示为Ex 2.怎么判断信号是能量信号还是功率信号] 1. 能量信号:下面的极限值存在,则为能量信号 2 ...
- 信号归一化功率_信号的频谱 频谱密度 功率谱密度 能量谱密度
这是我在知乎上的一个回答,鉴于很多朋友对这几个概念不是很清楚,就在公众中发一下. 这几个概念,对于刚学信号系统的同学甚至对于很多信号处理的老手来说,都是分不清楚的,下面我们就一一解释这几个概念. ...
最新文章
- SAP RETAIL 参考PO创建分配表之二
- linux开发板推荐_【新品发布】WiFi开发板XW-01-Kit,超低功耗,冷启快联,智能门锁首选!...
- 上海理工大学第二届“联想杯”全国程序设计邀请赛 Identical Day 思维 + 暴力
- Java JDBC篇4——数据库连接池
- Spring之IOC容器篇
- WinFormreportViewer报表[矩阵]的使用(一)(附源码示例) 之配餐系统的开发
- Android笔记 采用async http 框架 提交数据到服务器demo
- Chainlink预言机正式集成至币安智能链
- (原创)在service中定时执行网络操作的几点说明
- oracle clob 粘贴,使用Oracle SQL Developer将CLOB导出到文本文件
- 余弦距离和欧氏距离,知道原理和公式后真的很简单
- 在ASP.NET 2.0中实现URL重写
- Win10 CMD命令大全—超好用快捷键
- C++战斗游戏-----------圣光战神の起源之战 V8.13.0
- 移动终端开发详解总结(一)(kotlin版)| CSDN创作打卡
- 应用程序崩溃定位查找 (二)
- html语言无序下拉菜单,(4条消息)HTML语言标记详解
- 去除重复字母Python解法
- (附源码)计算机毕业设计SSM快递代收系统
- 白平衡(Color Constancy,无监督AWB):CVPR2019论文解析