骂心机婊最讽刺的说说:怎么用matlab产生有色噪声啊

来源:百度文库 编辑:高校问答 时间:2024/05/05 16:12:45

标 题: 用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