如何用matlab产生特定的随机信号和功率谱

img

如图,产生特定随机信号,且功率谱的方差随频率改变而改变。实现图中显示的所有函数并运行出结果。
实在不会写代码,能给个答案吗

clear all;close all;

sigma=2; % 瑞利分布参数sigma
fs=1e7;   % 采样率,单位:Hz
t=1e-3;   % 随机序列长度,单位:s
t1=0:1/fs:t-1/fs;
n=length(t1);
rand('state',0); % 把均匀分布伪随机发生器置为0状态
u=rand(1,n); % 产生(0-1)单位均匀信号
x=sqrt(2*log2(1./u))*sigma; % 广义均匀分布与单位均匀分布之间的关系
subplot(311);plot(x); % 输出信号图
xlabel('t(单位:s)');
title('瑞利分布信号'); % 输出信号的直方图
subplot(312);hist(x,0:0.2:20);
title('瑞利分布信号直方图');

x=[0:0.1:10];%010每次加0.1,共101个点
y=50*exp(-(x-5).^2./2);%x,y为初始函数值表现为红线
x=x';%因为拟合曲线时需要列向量
y=y';
y0=1*randn(1,101);%添加噪声//形成1101列随机数
y0=y0';%y1为添加噪声后的函数,表现为点
y1=y+y0;%加上噪声后的函数值
Mytype=fittype('A*exp(-(x-u)^2/(2*d^2))');%需要拟合的函数类型
[cf ,gof]=fit(x(:),y1(:),Mytype)%fit函数
xi=0:0.1:10;
yi=cf.A*exp(-(xi-cf.u).^2/(2*cf.d^2));%xi,yi为拟合后的函数
subplot(313)
plot(x,y1,'g.');%加噪声的函数为绿色的点
hold on;
plot(xi,yi,'r');%拟合后的曲线为红色的线
plot(x,y,'b');%拟合前的标准曲线为蓝色的线

先说思路:根据ppt上的瑞利分布公式,先生成时域随机信号,再对其做fft,并求其功率即可得到频域功率谱

对信号做傅里叶变换就可以了,不清楚的话,可以看看我的文章确知信号那一篇