핑크 ( ) 의사 랜덤 노이즈 생성


20

(분홍색) 잡음에 대한 의사 난수 근사를 생성하기위한 알고리즘은 무엇입니까 ?하지만 정수 DSP에서 계산 비용이 저렴한 구현에 적합합니까?1/f


기억은 어때요? 그것이 중요하지 않지만 계산이 필요한 경우 원하는 주파수 곡선의 임의 위상 iDFT를 수행하여 장치에 정적 const 파동 가능 테이블로 저장하십시오.
leftaroundabout

@leftaroundabout-랜덤 화이트 노이즈의 DFT에 1 / f 주파수 곡선을 곱한 다음 IDFT를 수행하면 랜덤 성이 더 좋습니까?
hotpaw2

1
화이트 노이즈 기본적으로 상수 함수의 랜덤 위상 iFT이므로 별 차이가 없습니다.
leftaroundabout

답변:


11

6
해당 사이트가 다운되면 답변이 사라지고 각 솔루션의 기본 사항을 가져 오면 사이트를 참조로 사용하여 답변이 훨씬 향상됩니다.
Kortuk

@Kortuk : 답은 커뮤니티 위키입니다. 자유롭게 참여하십시오! 다른 웹 참조를 가리키는 데 충분한 정보가 있어야합니다 (예 : 첫 번째 옵션에 대한 datageist의 답변 ). 그러나 자세한 내용은 좋을 것입니다.
Peter K.

20

선형 필터링

Peter의 답변 에서 첫 번째 접근법 (즉, 백색 잡음 필터링)은 매우 간단한 접근법입니다. 에서는 스펙트럼 오디오 신호 처리 , 호세 생성하는데 사용될 수있는 저차 필터 제공 알맞은 근사치 함께, 해석 결과의 전력 스펙트럼 밀도는 이상적인 일치 얼마나 잘한다. 선형 필터링은 항상 근사값을 산출하지만 실제로는 중요하지 않을 수 있습니다. JOS를 바꾸려면 :

화이트 노이즈에서 핑크 노이즈를 생성 할 수있는 정확한 (합리적, 유한 차수) 필터는 없습니다. 필터의 이상적인 진폭 응답이 비이성 함수 비례해야하기 때문입니다 . 여기서 f1/ff 주파수를 Hz 단위로 나타냅니다. 그러나 지각 적으로 정확한 것을 포함하여 원하는 정도의 근사치까지 핑크 노이즈를 생성하는 것은 쉽습니다.

그가 제공하는 필터의 계수는 다음과 같습니다.

B = [0.049922035, -0.095993537, 0.050612699, -0.004408786];
A = [1, -2.494956002, 2.017265875, -0.522189400];

MATLAB 필터 함수의 매개 변수로 형식화되어 있으므로 명확성을 기하기 위해 다음 전달 함수에 해당합니다.

H(z)=.041.096z1+.051z2.004z312.495z1+2.017z2.522z3

분명히, 실제로 계수의 전체 정밀도를 사용하는 것이 좋습니다. 다음은 해당 필터를 사용하여 생성 된 핑크 노이즈에 대한 링크입니다.

고정 소수점 구현의 경우 일반적으로 [-1,1) 범위의 계수로 작업하는 것이 더 편리하기 때문에 전달 함수의 일부 재 작업이 순서대로 수행됩니다. 일반적으로 권장 사항은 항목을 2 차 섹션 으로 나누는 것이지만 그 이유 중 일부 (1 차 섹션을 사용하는 것과 반대)는 근이 복잡 할 때 실제 계수로 작업하는 것이 편리하다는 것입니다. 이 특정 필터의 경우 모든 근본이 실제이므로 2 차 섹션으로 결합하면 일부 분모 계수가 1보다 커질 수 있으므로 다음과 같이 3 차 1 차 섹션이 합리적인 선택입니다.

H(z)=1b1z11a1z1 1b2z11a2z1 1b3z11a3z1

어디

b1=0.98223157, b2=0.83265661, b3=0.10798089
a1=0.99516897, a2=0.94384177, a3=0.55594526

오버 플로우를 방지하기 위해 각 섹션에 대한 이득 계수의 선택과 결합 된 해당 섹션에 대한 신중한 시퀀싱 선택이 필요합니다. Peter의 답변 링크에 제공된 다른 필터는 시도하지 않았지만 비슷한 고려 사항이 적용될 수 있습니다.

백색 잡음

분명히, 필터링 접근법은 우선 균일 한 난수의 소스를 필요로한다. 주어진 플랫폼에서 라이브러리 루틴을 사용할 수없는 경우 가장 간단한 방법 중 하나는 선형 합동 생성기 를 사용하는 것 입니다. 효율적인 고정 소수점 구현의 한 예는 TMS320C5x (pdf) 에서 난수 생성 TI에 의해 제공됩니다 . 다양한 다른 방법에 대한 자세한 이론적 논의는 James Gentle의 Random Number Generation 및 Monte Carlo Methods 에서 찾을 수 있습니다 .

자원

Peter의 답변에서 다음 링크를 기반으로 한 여러 출처는 강조 할 가치가 있습니다.

  • 첫 번째 필터 기반 코드 덩어리는 Orfanidis의 신호 처리 소개를 참조 합니다. 전체 텍스트는 해당 링크에서 사용할 수 있으며 [부록 B]에는 분홍색 및 흰색 노이즈 생성이 모두 포함됩니다. 의견에서 언급했듯이 Orfanidis는 대부분 Voss 알고리즘을 다룹니다.

  • Voss-McCartney Pink Noise Generator에 의해 생성 된 스펙트럼 . Voss 알고리즘의 변형에 대해 광범위하게 논의한 후 페이지 하단 부근에서이 링크는 거대한 분홍색 문자로 참조 됩니다 . 앞의 ASCII 다이어그램보다 훨씬 쉽게 읽을 수 있습니다.

  • Wentian Li의 1 / f 소음에 관한 참고 문헌 . 이것은 Peter의 소스와 JOS 모두에서 참조됩니다. 그것은 1918 년까지 거슬러 올라가는 1 / f 잡음에 대한 현기증이 많은 참조를 가지고 있습니다.


이 필터 계수를 어떻게 생각해 냈습니까? 원하는 기울기에 비선형으로 적합하지만 더 구체적인 알고리즘이 있는지 알고 싶습니다.
nibot

내 최고의 추측은 그의 논문 에서 언급 된 근사 기법 중 하나 일 것 입니다. 어느 쪽이든 잘 읽습니다.
datageist

와, 그건 꽤 문서입니다! 링크 주셔서 감사합니다.
nibot

1
필터 화이트 노이즈 방법의 문제점은 자동 상관 시계열과 같은 크기 위상 관계를 갖지 않는다는 것입니다. 따라서 자연스러운 프로세스를 모방하려는 경우 화이트 노이즈를 생성하고 필터링해서는 안됩니다. 실제로 자동 상관 노이즈를 시계열로 만들어야합니다. 즉, 현재 값은 이전 값 + 노이즈에 따라 다릅니다. 통계 "AR"프로세스를 참조하십시오. 두 가지 방법을 사용한 다음 FFT를 사용하여 노이즈를 생성하고 실수 대 허수 (주파수 영역의 복잡한 평면)를 플로팅하여이를 테스트 할 수 있습니다. 당신은 패턴에 큰 차이를 알 수 있습니다
폴 S

안녕하세요, DSP.SE에 오신 것을 환영합니다. 예를 들어 오디오 작업에서 잡음이 어떻게 들리는 지 신경 쓰면 크기 스펙트럼이 주요 관심사입니다. 그래도 새로운 답변으로 생각을 자세히 설명 할 수 있다면 좋을 것입니다. 우리 사이트에는 아직 그 기술을 설명하는 내용이 없다고 생각합니다.
datageist

1

나는 1990 년부터 Corsini와 Saletti의 알고리즘을 사용하고있다. -619. 감마 지수는 -2와 +2 사이입니다. 그것은 내 목적을 위해 잘 작동합니다. 에드

이 스크린 샷을 추가하려는 시도가 작동하면 아래 그림은 Corsini 및 Saletti 알고리즘이 얼마나 잘 수행되는지에 대한 예를 보여줍니다 (최소한 1990 년에 다시 프로그래밍 한대로). 샘플링 주파수는 1 kHz, 감마 = 1, 1000 32k FFT PSD의 평균입니다.

Corsini 및 Saletti 알고리즘을 통한 1 / f 노이즈 용 PSD


이것은 Corsini and Saletti (C & S) 노이즈 발생기의 이전 게시물까지 이어집니다. 다음 두 그림은 저주파 (감마> 0) 및 고주파수 (감마 <0) 노이즈 생성과 관련하여 C & S 생성기의 성능을 보여줍니다. 세 번째 그림은 C & S 생성기의 1 / f 노이즈 PSD (내 첫 번째 게시물과 동일)와 Orfanidis 교수의 훌륭한 책 (식 B.29, p. 736)에 제공된 예제 B.9 1 / f 생성기를 비교합니다. 이러한 모든 PSD는 평균 1000 개의 32k FFT PSD입니다. 그것들은 모두 일방적이고 평균을 뺀 것입니다. C & S PSD의 경우 3 극 / 10 년을 사용했으며 원하는 사용 가능한 범위로 40 년 (0.05 ~ 500Hz)을 지정했습니다. 따라서 C & S 발생기는 n = 12 극과 0 쌍을 가졌습니다. 샘플링 주파수는 1kHz, 나이키 스트는 500Hz, 분해능 요소는 0.0305Hz를 약간 넘었습니다. 에드 V 저주파 PSD 고주파 PSD 2 1 / f 노이즈 발생기 비교

fc10fMfcfM

ai=exp[2π10(iN)/hγ/2hc]
bi=exp[2π10(iN)/hc]
fM=0.5fc


1
코르 시니 (Corsini)와 살 레티 (Saletti) 상태 "이 필터는 N 개의 캐스케이드 된 1 차 섹션으로 구성되며, 각각은 실제 극-제로 쌍을 갖습니다." / d), N 제로가 따라옵니다. " 이 논문의 토론 섹션은 예외적으로 훌륭하게 수행되었으므로 그들이 말한 것을 프로그래밍하는 데 아무런 문제가 없었습니다. 내가 가지고있는 것은 내 오래된 하드 카피와 스캔 한 사본입니다. 위의 PSD의 경우 3 극 / 수십을 사용했으며 PSD는 평균을 빼고 일방적입니다. Ed V
Ed V
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.