(분홍색) 잡음에 대한 의사 난수 근사를 생성하기위한 알고리즘은 무엇입니까 ?하지만 정수 DSP에서 계산 비용이 저렴한 구현에 적합합니까?
(분홍색) 잡음에 대한 의사 난수 근사를 생성하기위한 알고리즘은 무엇입니까 ?하지만 정수 DSP에서 계산 비용이 저렴한 구현에 적합합니까?
답변:
몇 가지가 있습니다. 이 사이트에는 합리적인 (하지만 오래된) 목록이 있습니다.
선형 필터링
Peter의 답변 에서 첫 번째 접근법 (즉, 백색 잡음 필터링)은 매우 간단한 접근법입니다. 에서는 스펙트럼 오디오 신호 처리 , 호세 생성하는데 사용될 수있는 저차 필터 제공 알맞은 근사치 함께, 해석 결과의 전력 스펙트럼 밀도는 이상적인 일치 얼마나 잘한다. 선형 필터링은 항상 근사값을 산출하지만 실제로는 중요하지 않을 수 있습니다. JOS를 바꾸려면 :
화이트 노이즈에서 핑크 노이즈를 생성 할 수있는 정확한 (합리적, 유한 차수) 필터는 없습니다. 필터의 이상적인 진폭 응답이 비이성 함수 비례해야하기 때문입니다 . 여기서 f 주파수를 Hz 단위로 나타냅니다. 그러나 지각 적으로 정확한 것을 포함하여 원하는 정도의 근사치까지 핑크 노이즈를 생성하는 것은 쉽습니다.
그가 제공하는 필터의 계수는 다음과 같습니다.
B = [0.049922035, -0.095993537, 0.050612699, -0.004408786];
A = [1, -2.494956002, 2.017265875, -0.522189400];
MATLAB 필터 함수의 매개 변수로 형식화되어 있으므로 명확성을 기하기 위해 다음 전달 함수에 해당합니다.
분명히, 실제로 계수의 전체 정밀도를 사용하는 것이 좋습니다. 다음은 해당 필터를 사용하여 생성 된 핑크 노이즈에 대한 링크입니다.
고정 소수점 구현의 경우 일반적으로 [-1,1) 범위의 계수로 작업하는 것이 더 편리하기 때문에 전달 함수의 일부 재 작업이 순서대로 수행됩니다. 일반적으로 권장 사항은 항목을 2 차 섹션 으로 나누는 것이지만 그 이유 중 일부 (1 차 섹션을 사용하는 것과 반대)는 근이 복잡 할 때 실제 계수로 작업하는 것이 편리하다는 것입니다. 이 특정 필터의 경우 모든 근본이 실제이므로 2 차 섹션으로 결합하면 일부 분모 계수가 1보다 커질 수 있으므로 다음과 같이 3 차 1 차 섹션이 합리적인 선택입니다.
어디
오버 플로우를 방지하기 위해 각 섹션에 대한 이득 계수의 선택과 결합 된 해당 섹션에 대한 신중한 시퀀싱 선택이 필요합니다. 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 잡음에 대한 현기증이 많은 참조를 가지고 있습니다.
나는 1990 년부터 Corsini와 Saletti의 알고리즘을 사용하고있다. -619. 감마 지수는 -2와 +2 사이입니다. 그것은 내 목적을 위해 잘 작동합니다. 에드
이 스크린 샷을 추가하려는 시도가 작동하면 아래 그림은 Corsini 및 Saletti 알고리즘이 얼마나 잘 수행되는지에 대한 예를 보여줍니다 (최소한 1990 년에 다시 프로그래밍 한대로). 샘플링 주파수는 1 kHz, 감마 = 1, 1000 32k FFT 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