1. 首页 > 科技

MATLAB给定信号怎么画功率谱图像? matlab画信号频谱图

MATLAB给定信号怎么画功率谱图像?matlab画信号频谱图

matlab如何绘制功率谱

原发布者:huxiaotiansb

【转】matlab的功率谱计算   功率谱估计在现代信号处理中是一个很重要的课题,涉及的问题很多。在这里,结合matlab,我做一个粗略介绍。功率谱估计可以分为经典谱估计方法与现代谱估计方法。经典谱估计中最简单的就是周期图法,又分为直接法与间接法。直接法先取N点数据的傅里叶变换(即频谱),然后取频谱与其共轭的乘积,就得到功率谱的估计;间接法先计算N点样本数据的自相关函数,然后取自相关函数的傅里叶变换,即得到功率谱的估计.都可以编程实现,很简单。在matlab中,周期图法可以用函数periodogram实现。但是周期图法估计出的功率谱不够精细,分辨率比较低。因此需要对周期图法进行修正,可以将信号序列x(n)分为n个不相重叠的小段,分别用周期图法进行谱估计,然后将这n段数据估计的结果的平均值作为整段数据功率谱估计的结果。还可以将信号序列x(n)重叠分段,分别计算功率谱,再计算平均值作为整段数据的功率谱估计。这2种称为分段平均周期图法,一般后者比前者效果好。加窗平均周期图法是对分段平均周期图法的改进,即在数据分段后,对每段数据加一个非矩形窗进行预处理,然后在按分段平均周期图法估计功率谱。相对于分段平均周期图法,加窗平均周期图法可以减小频率泄漏,增加频峰的宽度。welch法就是利用改进的平均周期图法估计估计随机信号的功率谱,它采用信号分段重叠,加窗,FFT等技术来计算功率谱。与周期图法比较,welch法可以改善估计谱曲线的光滑性,大大提高谱估

matlab怎么绘制出功率谱

t=a(:,1);%%%%t是时间;

yt=a(:,2);%%%%yt是数据;

dt=t(2)-t(1);%%%%dt是点距;

lt=length(t);%%%%是数据的长度;

f0=2*pi/(lt*dt);%%%%f0是基频;

fy=fft(yt);%%%%fy是fft变换得到的波谱;

for i=1:1:lt

f(i)=f0*(i-1);%%%%f是频率;

P(i)=abs(fy(i))^2;%%%P是功率谱;

end

plot(f,P); %%%%画图;

f的单位是秒分之一。就是频率。

P是没有单位的,就是振幅大小。如果有那是yt单位的平方。

如何用MATLAB绘制功率谱密度图形

图片1 图片3 答案1:: function [t,omg,FT,IFT] = prefourier(Trg,N,OMGrg,K) % 输入参数: % Trg : 二维矢量,两个元素分别表示时域信号的起止时间; % N : 时域抽样数量; % OMGrg: 二维矢量,两个元素分别表示频谱的起止频率; % K : 频域抽样数量。 % 输出参数: % t : 抽样时间; % omg : 抽样频率; % FT : 实现傅里叶变换的矩阵~U~及系数; % IFT : 实现傅里叶逆变换的矩阵~V~及系数。 T = Trg(2)-Trg(1); t = linspace(Trg(1),Trg(2)-T/N,N)'; OMG = OMGrg(2)-OMGrg(1); omg = linspace(OMGrg(1),OMGrg(2)-OMG/K,K)'; FT = T/N*exp(-j*kron(omg,t.')); IFT = OMG/2/pi/K*exp(j*kron(t,omg.')); end 在另一个脚本文件中: clc;clear ;close all; N=1024*8; K=500; OMGrg=[0,100]; Trg=[0,1]; [t,omg,FT,IFT] = prefourier(Trg,N,OMGrg,K); % f0=10; % f=sin(2*pi*f0*t); f=randn(N,1); F=FT*f; figure; plot(t,f); figure; plot(omg/2/pi,abs(F).^2); 高斯白噪声的功率谱理论上为一直线,你给出的功率谱图不对,除非它是在某些特定情况下成立,比如经过了滤波器。功率谱密度为傅里叶变换的平方,在我的程序中,先求出傅里叶变换 F,然后求模的平方,得到功率谱。结果的图像看起来是杂乱的,围绕 :::::::::::::::::::请参考以下相关问题:::::::::::::::::::: MATLAB画功率谱密度的图形...求高手 :::::::::::::::::::请参考以下相关问题:::::::::::::::::::: Matlab画图问题,自相关函数,功率谱密度,求具体代码。 :::::::::::::::::::请参考以下相关问题:::::::::::::::::::: 为什么matlab画出的 高斯白噪声功率谱密度不是直线 :::::::::::::::::::请参考以下相关问题:::::::::::::::::::: 为什么用matlab画出的高斯白噪声功率谱密度不是直线 :::::::::::::::::::请参考以下相关问题:::::::::::::::::::: 谁会matlab编程显示功率谱密度呢,跪求... 答案1:: function [t,omg,FT,IFT] = prefourier(Trg,N,OMGrg,K) % 输入参数: % Trg : 二维矢量,两个元素分别表示时域信号的起止时间; % N : 时域抽样数量; % OMGrg: 二维矢量,两个元素分别表示频谱的起止频率; % K : 频域抽样数量。 % 输出参数: % t : 抽样时间; % omg : 抽样频率; % FT : 实现傅里叶变换的矩阵~U~及系数; % IFT : 实现傅里叶逆变换的矩阵~V~及系数。 T = Trg(2)-Trg(1); t = linspace(Trg(1),Trg(2)-T/N,N)'; OMG = OMGrg(2)-OMGrg(1); omg = linspace(OMGrg(1),OMGrg(2)-OMG/K,K)'; FT = T/N*exp(-j*kron(omg,t.')); IFT = OMG/2/pi/K*exp(j*kron(t,omg.')); end 在另一个脚本文件中: clc;clear ;close all; N=1024*8; K=500; OMGrg=[0,100]; Trg=[0,1]; [t,omg,FT,IFT] = prefourier(Trg,N,OMGrg,K); % f0=10; % f=sin(2*pi*f0*t); f=randn(N,1); F=FT*f; figure; plot(t,f); figure; plot(omg/2/pi,abs(F).^2); 高斯白噪声的功率谱理论上为一直线,你给出的功率谱图不对,除非它是在某些特定情况下成立,比如经过了滤波器。功率谱密度为傅里叶变换的平方,在我的程序中,先求出傅里叶变换 F,然后求模的平方,得到功率谱。结果的图像看起来是杂乱的,围绕

用matlab实现功率谱

n=0:0.1:200;%设定信号时间长度为0到200秒,采样间隔0.1,则采样频率为10HZ,点数2001

y=sin(2*pi*0.2*n)+sin(2*0.213*n);

Y=fft(y);%FFTPyy=Y.*conj(Y)/2000;%信号功率谱f=10*(0:1000)/2000;%计算横轴频率值figure(1)subplot(2,1,1),plot(n,y),title('信号'),xlabel('时间(S)')subplot(2,1,2),plot(f,Pyy(1:1001)),title('信号功率谱'),xlabel('频率(Hz)')

请采纳答案,支持我一下。