신호에 노이즈를 추가하는 올바른 방법

SKM

많은 영역에서 노이즈를 추가하는 동안 제로 평균 및 분산과 같은 일부 사양을 언급하는 것을 발견했습니다. AWGN, 컬러 노이즈, Db에서 다양한 SNR의 균일 한 노이즈를 추가해야합니다. 다음 코드는 노이즈를 생성하고 추가하는 방법을 보여줍니다. 기능은 알고 awgn()있지만 노이즈가 어떻게 추가되는지 모른 채 일종의 블랙 박스입니다. 그래서 누군가 잡음을 생성하고 추가하는 올바른 방법을 설명해 주시겠습니까? 감사합니다

SNR = [-10:5:30]; %in Db
snr = 10 .^ (0.1 .* SNR);

for I = 1:length(snr)
    noise = 1 / sqrt(2) * (randn(1, N) + 1i * randn(1, N));
    u = y + noise .* snr(I);
end
벅 가시

Steven 's가 정확하지 않고 기능 내부를 살펴 보라는 Horchler의 제안 awgn이 좋은 것이므로 다른 답변을 추가하고 있습니다.

MATLAB 또는 Octave (통신 도구 상자에 있음)에는 awgn원하는 신호 대 잡음 전력 레벨을 얻기 위해 (백색 가우스) 잡음을 추가 하는 기능 이 있습니다. 다음은 코드의 관련 부분입니다 (Octave 함수에서) :

  if (meas == 1)  % <-- if using signal power to determine appropriate noise power
    p = sum( abs( x(:)) .^ 2) / length(x(:));
    if (strcmp(type,"dB"))
      p = 10 * log10(p);
    endif
  endif

  if (strcmp(type,"linear"))
    np = p / snr;
  else   % <-- in dB
    np = p - snr;
  endif

  y = x + wgn (m, n, np, 1, seed, type, out);

아시다시피 p(입력 데이터의 힘)이 계산 된 것처럼 Steven의 대답은 옳지 않은 것 같습니다.

함수에 데이터 배열의 총 전력을 계산하고이를 원하는 s / n 값과 결합하여 추가 된 잡음의 적절한 전력 수준을 계산하도록 요청할 수 있습니다. 다음과 같이 선택적 입력 사이에 "measured"문자열을 전달하여이를 수행합니다 ( 옥타브 문서는 여기 를, MATLAB 문서는 여기참조 하십시오 ).

     y = awgn (x, snr, 'measured')

이 리드는 궁극적으로 meas=1그래서 meas==1위의 코드에서 진실되고. awgn그런 다음 함수 는 전달 된 신호를 사용하여 신호 전력을 계산하고 여기에서 원하는 s / n에서 추가 된 잡음에 대한 적절한 전력 레벨을 계산합니다.

문서가 더 설명함에 따라

기본적으로 snr 및 pwr은 각각 dB 및 dBW로 간주됩니다. 이 기본 동작은 "dB"로 설정된 유형으로 선택할 수 있습니다. type이 "linear"로 설정된 경우 pwr은 Watts로 가정하고 snr은 비율입니다.

이는 음수 또는 0dB snr 값을 전달할 수 있음을 의미합니다. 결과는 또한 "measured"문자열과 같이 전달하는 다른 옵션에 따라 달라집니다.

MATLAB 사례의 경우 설명서를 읽는 것이 좋으며 awgn다양한 시나리오 에서 함수를 사용하는 방법을 설명합니다 . Octave와 MATLAB의 구현은 동일하지 않으며 노이즈 전력 계산은 동일해야하지만 다른 옵션이있을 수 있습니다.

다음은 wgn(위에서 에서 호출 한 awgn) 관련 부분입니다 .

  if (strcmp(type,"dBW"))
    np = 10 ^ (p/10);
  elseif (strcmp(type,"dBm"))
    np = 10 ^((p - 30)/10);
  elseif (strcmp(type,"linear"))
    np = p;
  endif

  if(!isempty(seed))
    randn("state",seed);
  endif

  if (strcmp(out,"complex"))
    y = (sqrt(imp*np/2))*(randn(m,n)+1i*randn(m,n)); % imp=1 assuming impedance is 1 Ohm
  else
    y = (sqrt(imp*np))*randn(m,n);
  endif

노이즈의 힘 ( np) 을 확인하려는 경우 awgnawg함수는 다음 관계가 유지된다고 가정합니다.

  np = var(y,1);        % linear scale
  np = 10*log10(np);    % in dB 

잡음에 대한 모집단 분산 var(...,1)어디에 있습니까 ?y

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

R에 노이즈를 추가하는 방법

분류에서Dev

MATLAB에서 신호에 x % 노이즈를 추가하는 방법은 무엇입니까?

분류에서Dev

캘린더에 올바른 방법으로 날짜를 추가하는 방법

분류에서Dev

이 경우 올바른 위치에 div를 추가하는 방법

분류에서Dev

GStreamer에서 EOS 신호를 보내고 C를 사용하여 수신하는 올바른 방법

분류에서Dev

경로에 패키지 추가를 처리하는 "올바른"방법

분류에서Dev

바이트 변수를 바이트 배열에 추가하는 올바른 방법

분류에서Dev

이미지에 5 %% 가우스 노이즈를 추가하는 방법

분류에서Dev

이미지에서 노이즈를 추가하고 제거하는 방법

분류에서Dev

구성 요소에서 최신 Vue 구분 기호를 참조하는 올바른 방법

분류에서Dev

Bootstrap 3에서 이미지 위에 텍스트를 추가하는 올바른 방법

분류에서Dev

Zend 2 : 컨트롤러를 추가하는 올바른 방법

분류에서Dev

rkhunter : 경고를 추가로 처리하는 올바른 방법?

분류에서Dev

GridLookUpEdit를 XtraGridColumn에 바인딩하는 올바른 방법

분류에서Dev

내 웹 사이트에 음악 편집기 abcjs를 추가하는 올바른 방법은 무엇입니까?

분류에서Dev

intellij에 json-simple 라이브러리를 추가하는 올바른 방법은 무엇입니까?

분류에서Dev

jquery를 사용하여 li 요소를 ul에 추가하는 올바른 방법을 얻지 못함

분류에서Dev

jQuery를 사용하여 본문에 onload 함수를 추가하는 올바른 방법

분류에서Dev

Pandas에서 데이터를 병합하는 올바른 방법

분류에서Dev

콜백에 이벤트를 입력하는 올바른 방법

분류에서Dev

PL / SQL에서 비트를 이동하는 올바른 방법

분류에서Dev

angularjs를 사용하여 Office 추가 기능에서 Office.initialize하는 올바른 방법

분류에서Dev

React에서 상태를 올리는 올바른 방법

분류에서Dev

최신 버전의 Debian에서 mcelog를 사용하는 올바른 방법

분류에서Dev

Google Scripts-올바른 시트를 호출하는 방법

분류에서Dev

집계 함수를 호출하는 올바른 방법

분류에서Dev

Subversion에 포함될 iOS 프로젝트에 프레임 워크를 추가하는 올바른 방법

분류에서Dev

Eclipse 템플릿에서 코드에 올바른 들여 쓰기를 추가하는 방법

분류에서Dev

확대 / 축소 ios에서 pdf에 콘텐츠를 추가하는 올바른 방법

Related 관련 기사

  1. 1

    R에 노이즈를 추가하는 방법

  2. 2

    MATLAB에서 신호에 x % 노이즈를 추가하는 방법은 무엇입니까?

  3. 3

    캘린더에 올바른 방법으로 날짜를 추가하는 방법

  4. 4

    이 경우 올바른 위치에 div를 추가하는 방법

  5. 5

    GStreamer에서 EOS 신호를 보내고 C를 사용하여 수신하는 올바른 방법

  6. 6

    경로에 패키지 추가를 처리하는 "올바른"방법

  7. 7

    바이트 변수를 바이트 배열에 추가하는 올바른 방법

  8. 8

    이미지에 5 %% 가우스 노이즈를 추가하는 방법

  9. 9

    이미지에서 노이즈를 추가하고 제거하는 방법

  10. 10

    구성 요소에서 최신 Vue 구분 기호를 참조하는 올바른 방법

  11. 11

    Bootstrap 3에서 이미지 위에 텍스트를 추가하는 올바른 방법

  12. 12

    Zend 2 : 컨트롤러를 추가하는 올바른 방법

  13. 13

    rkhunter : 경고를 추가로 처리하는 올바른 방법?

  14. 14

    GridLookUpEdit를 XtraGridColumn에 바인딩하는 올바른 방법

  15. 15

    내 웹 사이트에 음악 편집기 abcjs를 추가하는 올바른 방법은 무엇입니까?

  16. 16

    intellij에 json-simple 라이브러리를 추가하는 올바른 방법은 무엇입니까?

  17. 17

    jquery를 사용하여 li 요소를 ul에 추가하는 올바른 방법을 얻지 못함

  18. 18

    jQuery를 사용하여 본문에 onload 함수를 추가하는 올바른 방법

  19. 19

    Pandas에서 데이터를 병합하는 올바른 방법

  20. 20

    콜백에 이벤트를 입력하는 올바른 방법

  21. 21

    PL / SQL에서 비트를 이동하는 올바른 방법

  22. 22

    angularjs를 사용하여 Office 추가 기능에서 Office.initialize하는 올바른 방법

  23. 23

    React에서 상태를 올리는 올바른 방법

  24. 24

    최신 버전의 Debian에서 mcelog를 사용하는 올바른 방법

  25. 25

    Google Scripts-올바른 시트를 호출하는 방법

  26. 26

    집계 함수를 호출하는 올바른 방법

  27. 27

    Subversion에 포함될 iOS 프로젝트에 프레임 워크를 추가하는 올바른 방법

  28. 28

    Eclipse 템플릿에서 코드에 올바른 들여 쓰기를 추가하는 방법

  29. 29

    확대 / 축소 ios에서 pdf에 콘텐츠를 추가하는 올바른 방법

뜨겁다태그

보관