怎么由白噪声产生有色噪声,用matlab实现

怎么由白噪声产生有色噪声,用matlab实现,第1张

产生有色噪声e(k) = x(k) + 0.5*x(k-1)。其中,x(k)为方差为1的白噪声

clear allclose all

clc

L=500 %仿真长度

c = [1 -0.5]

nc = length(c) - 1

xik=zeros(nc,1) %白噪声初值

xi=randn(L,1) %产生均值为0,方差为1的高斯白噪备碧伍声序列

for k=1:L

e(k)=c*[xi(k)xik] %产生有色噪声

%数据更新

for i=nc:-1:2

xik(i)=xik(i-1)

end

xik(1)=xi(k)

end

subplot(2,1,1)

plot(xi)

xlabel('k')ylabel('噪声幅值')title('白噪声序慧渗列')

subplot(2,1,2)

plot(e)

xlabel('k')ylabel('噪声幅值')title('有色噪声序列'仿或)

%测试功率谱

[y1,f1] = Spectrum_Calc(xi',512)

p1 = 1/L * y1.*conj(y1)

figure(2)

subplot(211)

plot(f1,p1)

[y2,f2] = Spectrum_Calc(e,512)

p2 = 1/L * y2.*conj(y2)

subplot(212)

plot(f2,p2)

MATLAB里面没有专门产生这种噪声的命令,不过你可以凯键先用rand,

randn这样的产生随机白噪声,然后用filter来滤一盯信巧下。就能得到粉噪声了。

具坦首体设置什么的你参考randn,filter这些命令吧,不给分,具体的俺不说。

标 题: 用MATLAB来生成有色噪声

发信站: 哈工大紫丁香 (2001年07月12日17:13:53 星期四液睁), 站内信件

rand产生的是白噪声,那么有色噪声如何产生的呢?

这是从清华转过来的一个m文件。

FFT变幻然后IFFT变幻虚袜

function sig=FractRnd(beta,k,HuaTu)

%sig=FractRnd(beta,k,HuaTu)

%To generate 1/f^betta noise

%INPUT

%beta is the exponent, a number

%k is the number of synthetic data points

%OUTPUT

%sig is a k-point array

%

if nargin==2

HuaTu=0

end

len_beta=length(beta)

phi_k=2*pi*rand(1,k)

f=[1:k].^(-beta/2).*exp(i*phi_k(1:k))

sig=real(ifft(f))

sig=(sig-mean(sig))./std(sig)

if HuaTu

%To verify the scaling behavior of power spectral density:

% P(f) ~ 1/f^beta

figure(HuaTu)

F=fft(sig)

P=(abs(F)).^2

P([1,round(end/2):end])=[]

% plot(log(1:length(P)),log(P))

loglog(1:length(P),P,'k')

xlabel('Frequency'差埋激)

ylabel('Power spectrum')

% pause

end


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12326649.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存