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

问题描述:

如何用MATLAB绘制功率谱密度图形
随机产生一次数据x=randn(1,1024*8) 求功率谱密度
如何应用MATLAB画出来横坐标为频率(Frequency(hz)))纵坐标为功率谱密度(Power Spectrum Magnitude (dB))的图形
希望把程序写出来,
画出来大概就是这个样子,希望哪位大虾把程序给小弟编出来,
1个回答 分类:综合 2014-10-12

问题解答:

我来补答
function [t,omg,FT,IFT] = prefourier(Trg,N,OMGrg,K)
% 输入参数:
% Trg :二维矢量,两个元素分别表示时域信号的起止时间;
% N :时域抽样数量;
% OMGrg:二维矢量,两个元素分别表示频谱的起止频率;
% K :频域抽样数量.
% 输出参数:
% t :抽样时间;
% omg :抽样频率;
% FT :实现傅里叶变换的矩阵~及系数;
% IFT :实现傅里叶逆变换的矩阵~及系数.
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,然后求模的平方,得到功率谱.结果的图像看起来是杂乱的,围绕着一根直线在上下振动.
 
 
展开全文阅读
剩余:2000
上一页:dc2inr3qec3r2
下一页:这样怎么写