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

来源:百度知道 编辑:UC知道 时间:2024/06/26 03:08:35
随机产生一次数据x=randn(1,1024*8) 求功率谱密度
如何应用MATLAB画出来横坐标为频率(Frequency(hz)))纵坐标为功率谱密度(Power Spectrum Magnitude (dB))的图形

希望把程序写出来,谢谢la!
画出来大概就是这个样子,希望哪位大虾把程序给小弟编出来,小弟先谢谢了!

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,然后求模的平方,得到功率谱。结果的图像看起