Matlab 版 (精华区)

发信人: ramjet (德芙), 信区: Matlab
标  题: 用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


--
              在这个时代
              如果你要为社会做一点贡献的话
              那么就想办法
              让你和你爱的人
              好好的活着

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.237.3]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.599毫秒