Matlab画图问题,自相关函数,功率谱密度,求具体代码。

1、产生一组(0,1)均匀分布的随机序列,画出其自相关函数和功率谱密度;
2、产生一组服从N~(2,5)的正态随机序列,画出其自相关函数和功率谱密度;
3、估计随机过程X(t)=cos(600πt)+cos(640πt)+N(t)的自相关函数和功率谱,其中N(t)服从N~(0,1)的高斯分布。
4、随机相位信号X(t)=Acos(ωt+Ψ),其中A=2 和ω=1000π, Ψ是在(0, 2π)上均匀分布的随机变量。估计该随机信号的自相关函数和功率谱密度。
提示:随机序列{Xn}的自相关函数Rx(m)用下式计算(图片):

然后通过计算自相关函数的离散傅立叶变换(DFT)来得出序列的功率谱。DFT可以用MATLAB中的FFT函数来计算。

参考函数:fft, fftshift, ifft, ifftshift

第1个回答  2011-06-22
clear all;
close all;
warning off all;

Fs = 1000;
nfft=1024;
idx = 0:round(nfft/2-1);
k = idx*Fs/nfft;
t = 0:1/Fs:1;

x1 = rand(1,1001);
[cor1 lag1] = xcorr(x1,'unbiased');
figure(1);
subplot(211),plot(lag1/Fs,cor1),title('(0,1)均匀分布自相关函数');
Xk1 = fft(cor1,nfft);
Px1 = abs(Xk1);
subplot(212),plot(k,10*log10(Px1(idx+1))),title('(0,1)均匀分布功率谱密度');

x2 = normrnd(2,5,1,1001);
[cor2 lag2] = xcorr(x2,'unbiased');
figure(2);
subplot(211),plot(lag2/Fs,cor2),title('(2,5)正态分布自相关函数');
Xk2 = fft(cor2,nfft);
Px2 = abs(Xk2);
subplot(212),plot(k,10*log10(Px2(idx+1))),title('(2,5)正态分布功率谱密度');

x3 = cos(600*pi*t)+cos(640*pi*t)+randn(1,1001);
[cor3 lag3] = xcorr(x3,'unbiased');
figure(3);
subplot(211),plot(lag3/Fs,cor3),title('随机信号自相关函数');
Xk3 = fft(cor3,nfft);
Px3 = abs(Xk3);
subplot(212),plot(k,10*log10(Px3(idx+1))),title('随机信号功率谱密度');

fai = 2*pi*rand(1,1001);
x4 = 2*cos(1000*pi*t+fai);
[cor4 lag4] = xcorr(x4,'unbiased');
figure(4);
subplot(211),plot(lag4/Fs,cor4),title('随机相位信号自相关函数');
Xk4 = fft(cor4,nfft);
Px4 = abs(Xk4);
subplot(212),plot(k,10*log10(Px4(idx+1))),title('随机相位信号功率谱密度');追问

非常感谢!感觉你很厉害。我这里还有几个题,如果有时间能不能也帮我解答下,追加分。谢谢!
Q341474603

本回答被提问者采纳

Matlab画图问题,自相关函数,功率谱密度,求具体代码。
subplot(212),plot(k,10*log10(Px2(idx+1))),title('(2,5)正态分布功率谱密度');x3 = cos(600*pi*t)+cos(640*pi*t)+randn(1,1001);[cor3 lag3] = xcorr(x3,'unbiased');figure(3);subplot(211),plot(lag3\/Fs,cor3),title('随机信号自相关函数');Xk3 = fft(cor3,nfft)...

如何用MATLAB绘制功率谱密度图形
回答:图片1 图片3 答案1:: function [t,omg,FT,IFT] = prefourier(Trg,N,OMGrg,K) % 输入参数: % Trg : 二维矢量,两个元素分别表示时域信号的起止时间; % N : 时域抽样数量; % OMGrg: 二维矢量,两个元素分别表示频谱的起止频率; % K : 频域抽样数量。 % 输出参数: % t : ...

MATLAB画功率谱密度的图形...求高手
cxn=xcorr(xn,'unbiased'); %计算序列的自相关函数 CXk=fft(cxn,Nfft);%对自相关函数进行傅里叶变换 Pxx=abs(CXk);index=0:round(Nfft\/2-1);k=index*Fs\/Nfft;%频谱序列 subplot(3,1,3),plot(k,Pxx(index+1));%绘制功率谱曲线 首先确定一下数据位数 ...

用MATLAB如何求均匀白噪声序列的自相关函数曲线和功率谱密度曲线
cm=abs(fc);fl=(0:length(fc)-1)'*fs\/length(fc);plot(fl,cm);%自相关函数的傅里叶变换:即功率谱密度。其中。cm是cory付里叶变换后的幅值。fl为fc的长度。

谁会matlab编程显示功率谱密度呢,跪求...
'时间(s)');title('原始信号傅里叶变换');用周期图法估计功率谱密度 p=y.*conj(y)\/1000; %计算功率谱密度 ff=10000*(0:499)\/1000; %计算变换后不同点对应的频率值 figure(2);plot(ff,p(1:500));ylabel('幅值');xlabel('频率(Hz)');title('功率谱密度(周期图法)');

MATLAB | 频谱分析算法 | periodogram功率谱密度估计 | 附数据和出图...
生成的频谱图直观展示了信号的能量分布情况,可清晰区分出主要频率成分与噪声背景。具体出图效果如下:以下是直接用于Power Spectral Density (PSD)估计的MATLAB代码示例,用于执行Periodogram功率谱密度估计过程。通过此代码,用户可以快速对信号进行频谱分析,了解信号在不同频率上的能量分布。为了获取完整代码和...

怎样从离散的信号采样数据中 求出信号的自相关函数,和功率谱密度
f(t) 的谱密度和 f(t) 的自相关组成一个傅里叶变换对(对于功率谱密度和能量谱密度来说,使用着不同的自相关函数定义)。 通常使用傅里叶变换技术估计谱密度,但是也可以使用如Welch法(Welch's method)和最大熵这样的技术。 傅里叶分析的结果之一就是Parseval定理(Parseval's theorem),这个...

PSD(功率谱密度)和调整后的FFT的幅度谱(Matlab代码实现)
3. Matlab代码实现 在Matlab中,可以使用内置函数fft来计算快速傅里叶变换。对于长度小于1000点的信号,也可以使用自定义的嵌套函数Fast_Fourier_Transform(X, N)来进行计算,以提高计算效率。通过本文的介绍,读者可以深入理解功率谱密度和调整后的FFT幅度谱的计算方法及其在Matlab中的实现步骤,为实际应用...

matlab怎么绘制出功率谱
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分析功率谱密度,采样频率的设定.高手进!
间接法先由序列x(n)估计出自相关函数R(n),然后对R(n)进行傅立叶变换,便得到x(n)的功率谱估计。Matlab代码示例:clear;Fs=1000; %采样频率 n=0:1\/Fs:1;产生含有噪声的序列 xn=cos(2*pi*40*n)+3*cos(2*pi*100*n)+randn(size(n));nfft=1024;cxn=xcorr(xn,'unbiased'); %计算...

相似回答