코 히어 런트 샘플링을위한 양자화 노이즈-위상 노이즈?


9

업데이트 : 이 게시물의 하단에 추가 생각을 참조하십시오.


아래에 설명 된 것 (샘플링 클럭과 관련이없는 신호)에 의해 제약을받지 않는 일반적인 샘플링 조건에서, 양자화 노이즈는 종종 하나의 양자화 레벨에 걸쳐 균일 한 분포로 추정됩니다. 복잡한 신호의 샘플링을 생성하기 위해 두 개의 ADC가 I 및 Q 경로와 결합되면 양자화 노이즈는 아래 시뮬레이션 된 것처럼 진폭 및 위상 노이즈 성분을 모두 갖습니다. 도시 된 바와 같이,이 잡음은 I 및 Q 성분이 신호가 45 ° 각도 일 때와 같이 진폭 및 위상에 동일하게 기여할 때 삼각형 분포를 가지며, 신호가 축 상에있을 때 균일하다. 이것은 각각의 I 및 Q에 대한 양자화 잡음이 서로 관련이 없기 때문에 예상되며, 그 결과 분포가 둘 다 출력 결과에 기여할 때 분산 될 것이다.

질문은 코 히어 런트 샘플링의 경우에 위상 노이즈 분포가 크게 변하는 지 여부입니다 (샘플링 클럭 자체가 훨씬 우수한 위상 노이즈를 가지고 있다고 가정). 특히 코 히어 런트 샘플링이 양자화 관련 위상 노이즈를 크게 줄일 수 있는지 이해하려고합니다. 이는 일관성이 쉽게 유지되는 클록 신호 생성에 직접 적용 할 수 있습니다.

실제 신호 (ADC 1 개) 또는 복소 신호 (ADC 2 개, 단일 복합 샘플을 설명하는 I 및 Q에 대한 1 개)를 모두 고려하십시오. 실제 신호의 경우 입력은 풀 스케일 사인파이며 위상 항은 분석 신호에서 파생됩니다. 정현파 톤의 제로 크로싱 변화와 관련된 지터는 실제 신호에 대한 결과적인 위상 노이즈의 예입니다. 복잡한 신호의 경우 입력은 풀 스케일입니다이자형제이ω여기서 실제 및 가상의 구성 요소는 각각 최대 크기의 사인파입니다.

이것은 코 히어 런트 샘플링이 잘 설명되어 있지만 위상 노이즈는 구체적으로 언급되지 않은이 질문과 관련이 있습니다.

코 히어 런트 샘플링 및 양자화 노이즈 분포

유도 된 AM 및 PM 잡음 성분을보다 명확하게 설명하기 위해, 주어진 샘플링 순간에 연속 시간으로 복잡한 벡터를 연속적으로 보여주는 복잡한 양자화의 경우와 아래의 그림을 추가했습니다. 신호의 실수 부와 허수 부의 양자화 레벨의 균일 한 분포.

여기에 이미지 설명을 입력하십시오

위의 그래픽에서 양자화가 발생하는 위치를 확대하여 유도 진폭 오류 및 위상 오류를 보여줍니다.

여기에 이미지 설명을 입력하십시오

따라서 임의의 신호가 주어지면

에스()=()이자형제이ω=()코사인(ω)+제이()(ω)=나는()+제이()

양자화 된 신호는 다음과 같이 주어진 가장 가까운 거리 지점입니다.

에스케이=나는케이+제이케이

어디 나는케이케이 다음에 따라 각각 매핑 된 양자화 된 I 및 Q 레벨을 나타냅니다.

{엑스}=Δ엑스Δ+12

어디 ()나타내는 플로어 함수Δ 이산 양자화 레벨을 나타낸다.

나는케이={나는(케이)}케이={(케이)}

진폭 오차는 |에스(케이)||에스케이| 어디 케이 그 시간이다 에스() 생성하기 위해 샘플링되었습니다 에스케이.

위상 오류는 인수{에스(케이)}인수{에스케이}=인수{에스(케이)(에스케이)} 여기서 *는 켤레 복소수를 나타냅니다.

이 포스트에 대한 질문은 샘플링 클럭이 입력 신호 (정수의 배수)에 상응 할 때 위상 성분의 특성은 무엇인가?

도움을주기 위해 여기에 I 및 Q에서 6 비트 양자화를 갖는 복소수 양자화 사례에 대한 진폭 및 위상 오류의 시뮬레이션 된 분포가 있습니다. 이러한 시뮬레이션의 경우 실제 신호 "진실"이 양자화의 어느 곳에 나있을 가능성이 있다고 가정합니다. 위의 다이어그램에 표시된 그리드로 정의 된 섹터. 신호가 사분면 중 하나 (모두 I 또는 모두 Q)를 따르는 경우 단일 ADC의 경우 실제 신호와 함께 분포가 균일합니다. 그러나 신호가 45 ° 각도를 따라 분포는 삼각형입니다. 이 경우 신호는 각각 I와 Q 기여가 같고 각각은 상관 관계가없는 균일 분포입니다. 두 분포는 삼각형이됩니다.

양자화와 45도

양자화로 45도 확대

각도 히스토그램

히스토그램 크기

신호 벡터를 0 °로 회전 한 후 크기 및 각도 히스토그램은 예상보다 훨씬 균일합니다.

양자화와 0도 각도

0 °에서의 각도 히스토그램

0 °에서의 히스토그램 크기


업데이트 : 우리는 여전히 특정 질문에 대한 대답이 필요하기 때문에 (아래의 Olli의 대답은 삼각형의 균일 한 잡음 밀도의 업데이트로 이어지는 잡음의 특성을 잘 설명했지만 아래의 위상 잡음의 특성 일관성있는 샘플링 조건은 여전히 ​​애매 모호합니다.) 실제 답변이나 추가 진행을 유발할 수있는 다음과 같은 생각을 제공합니다.

코 히어 런트 샘플링 조건에서 샘플링 속도는 입력 주파수의 정수배입니다 (및 위상 고정). 이는 복잡한 신호 및 샘플링을 위해 복소 평면을 통해 한 번 회전하거나 실제 신호 및 샘플링 (단일 ADC)을위한 정현파의 한 사이클의 정수 샘플의 정수로 항상 정수의 샘플이 있음을 의미합니다.

설명 된대로 샘플링 클록 자체가 훨씬 우수하여 기여로 간주되지 않는 경우를 가정합니다. 따라서 샘플은 매번 정확히 동일한 위치에 놓입니다.

실제 신호의 경우를 고려하여 위상 노이즈를 결정할 때 제로 크로싱에만 관심이있는 경우 코 히어 런트 샘플링의 결과는 고정되지만 일관된 지연 시프트 (상승 및 하강 에지는 서로 다른 지연을 가질 수 있지만) 일관성이 홀수 인 경우). 복잡한 샘플링 사례에서 우리는 모든 샘플에서 위상 노이즈에 대해 우려하고 있으며 실제 사례에서도 동일하다고 생각합니다. "진실"에서 순간적으로 샘플의 시간 지연이 의심됩니다. 위상 잡음 성분이지만 진폭 차이도 두 배로 계산하면 혼란 스럽습니다 ...) 시간이 있으면 모든 왜곡이 입력 패턴의 정수 고조파에서 하나 이상의 반복 패턴이 주어짐에 따라 시뮬레이션 할 것입니다 주기, 위상 대 진폭의 테스트는 고조파의 상대적인 위상과 기본의 것입니다. 시뮬레이션 또는 계산을 통해 볼 수있는 흥미로운 것은 이러한 고조파 (실제 신호의 경우 모든 복합 공액 대응 물을 가짐)의 합이 기본 또는 위상과 함께 직교하여 모든 위상 노이즈, 모든 진폭 노이즈 또는이 둘의 합성으로 표시됩니다. (짝수의 샘플과 홀수 사이의 차이가 이에 영향을 줄 수 있습니다).

복잡한 경우, 상당수의 샘플로 수행 된 Olli의 그래픽은 그가 표시된 각 양자화 된 샘플과 관련된 "진실"에 샘플 위치를 보여 주면 더 많은 통찰력을 추가 할 수 있습니다. 다시 말하지만 홀수 또는 짝수의 샘플이 있으면 흥미로운 차이가 발생할 가능성이 있습니다 (그의 그래픽은 고르고 결과는 대칭이지만 관찰 결과는 위상 노이즈 대 진폭 노이즈에 대해서는 더 이상 볼 수 없습니다). 그러나 분명한 것은 실제 사례와 복잡한 사례 모두에서 잡음 성분이 샘플링이 일관된 기본 주파수의 정수 고조파에서만 존재할 것이라는 점입니다. 따라서 위상 노이즈가 여전히 의심 스럽지만 정수 고조파의 위치는 후속 필터링으로 제거하는 데 훨씬 도움이됩니다.

(참고 : 이것은 스펙트럼 순도가 높은 기준 클록 신호 생성에 적용됩니다.)


2
실제 질문이 무엇인지 더 수학적으로 명시 적으로 표현할 수 있기를 바랍니다.
robert bristow-johnson

어떻게해야하는지 생각해 봅시다. 내가 설명하려고하는 것은 양자화 노이즈가 진폭 및 위상 성분 (AM 및 PM)으로 분해 될 수 있다는 것입니다. 샘플링 클록과 관련이 없거나 임의 인 임의의 사인파 톤을 양자화하면 샘플링 된 결과는 원래 파형에 의해 설정된 "진실"의 진폭 오류와 위상 오류를 모두 갖게됩니다. 코 히어 런트 샘플링 (coherent sampling)의 경우 위상 오류가 크게 줄어든 것으로 의심됩니다.에프에스=에프에스나는) 어디 에프에스 샘플링 속도 에프에스나는신호 속도입니다.
댄 보첸

rbj에 동의합니다. 위상 대 진폭 분포의 의미는 무엇입니까? 나는 수학을 믿는다. 문제에 대한 모델은 문제 해결에 도움이됩니다. 또한 양자화 노이즈를 진폭과 위상으로 분해하는 방법이 더 구체적 일 수 있습니까?
Maximilian Matthé

1
이것은 본문에서 암시 된 임의의 신호 또는 수학적 설명에 의해 암시 된 바와 같은 정현파 신호에 관한 것인가? 사인파 신호 만 고려하면이 사례가 크게 단순화되지만 실제 신호의 동작을 반영하지 않을 수도 있습니다. 정현파 신호에 적합한 경우, 양자화 오류는 주기적이며 주기적 위상 오류로 변환됩니다. 이러한 유형의 상관 관계는 히스토그램에 표시되지 않지만 "위상 구성 요소의 특성"을 설명하는 데있어서 중요 할 수 있습니다 (이로 인해 위상 오류가 맞습니까?).
호프

1
또한 마지막 단락을 동기화 상태로 유지하려는 경우를 대비하여 클럭 신호 생성을위한 것임을 명확히하기 위해 질문을 업데이트했습니다 (측정 용으로 제안).
Dan Boschen

답변:


5

나는 의심합니다 (편집 : 이것은 나중에 질문에서 제거되었습니다).

입력 신호가 샘플링 클록과 관련이없는 한 이러한 AM 및 PM 잡음 성분의 분포는 합리적으로 균일하다고 가정 할 수 있습니다.

신호를 고려하십시오.

신호()=코사인()+제이()
그리고 그 양자화 :
나는이자형_에스나는()=일주(코사인())+제이×일주(())

양자화 단계 1/ I 및 Q 구성 요소 모두 =5 당신의 그림에서).

신호의 추적 및 양자화
그림 1. 신호의 트레이스 (파란색 선)와 양자화 (검은 점)와 신호의 다른 부분이 양자화되는 방식을보기 위해 이들 사이의 모핑 =5. "모핑"은 단순히 일련의 추가 파라 메트릭 플롯입니다.신호()+(1)나는이자형_에스나는() ...에서 =[15,25,5,45].

양자화 오류로 인한 위상 오류는 다음과 같습니다.

h에스이자형_이자형아르 자형아르 자형영형아르 자형()=아탄((나는이자형_에스나는()),(나는이자형_에스나는()))아탄((신호()),(신호()))=아탄(일주(()),일주(코사인()))아탄((),코사인())=아탄(일주(()),일주(코사인()))모드(π,2π)+π

랩핑 된 단계를 빼는 것은 위험하지만이 경우에는 작동합니다.

위상 오류
그림 2. h에스이자형_이자형아르 자형아르 자형영형아르 자형() ...에 대한 =5.

이것은 부분 선형 함수입니다. 모든 선분은 0 레벨을 교차하지만 다른 여러 레벨에서 끝납니다. 그것은 고려 균등 한 랜덤 변수로서 h에스이자형_이자형아르 자형아르 자형영형아르 자형(),0에 가까운 값은 과도하게 나타납니다. 그래서h에스이자형_이자형아르 자형아르 자형영형아르 자형() 균일 한 분포를 가질 수 없습니다.

실제 질문을 고려할 때 그림 1을 보면 충분히 높은 그리고 각각의 샘플링 간격 동안 신호가 몇 개의 양자화 경계를지나 회전하는 복소 정현파의 주파수는, 샘플에서의 양자화 에러는 사실상 수 이론의 단점으로부터 나온 의사 난수의 고정 된 시퀀스이다. 오류는 빈도와,또한 주파수가 샘플링 주파수의 배수의 서브 멀티플 인 경우 초기 단계에서, 양자화 에러는 모든 가능한 양자화 에러 값을 포함하지 않는 반복 시퀀스이다. 큰 한계에서I 및 Q 오차의 분포는 균일하고 위상 및 크기 오차는 신호 위상에 의존하는 분포에서 나오는 의사 난수입니다. 직사각형 양자화 그리드가 배향을 갖기 때문에 위상에 대한 의존성이 존재한다.

큰 한계에서 ,위상 오차와 크기 오차는 복소수 오차의 수직 성분입니다. 크기 오차는 무한 양자화 단계에 비례하여 표현 될 수 있고, 위상 오차는아크 신양자화 단계의. 신호 단계에서α 크기 오차는 각도 방향입니다 α 위상 오류는 각도 방향입니다 α+π/2. 복소 양자화 오차는 I 및 Q 축을 따라 배향 된 양자화 단계 제곱에서 균일하게 분포되며, 좌표에서의 코너는 양자화 단계에 비례하여 표현된다 :

[(1/2,1/2),(1/2,1/2),(1/2,1/2),(1/2,1/2)]

이러한 좌표의 회전 또는 비례 위상 오차 및 비례 크기 오차 축으로의 좌표 투영은 노드와 동일한 평면 상 조각 별 선형 확률 ​​밀도 함수를 제공합니다.

[코사인(α)2(α)2,코사인(α)2+(α)2,코사인(α)2+(α)2,코사인(α)2(α)2]=[2코사인(α+π/4),2(α+π/4),2코사인(α+π/4),2(α+π/4)]

PDF의 노드
그림 3. 신호 각도를 고려한 비례 위상 오차 및 비례 크기 오차의 공유 된 조각 별 선형 평면 상단 밀도 밀도 함수 (PDF)의 노드 α. 에서α{π,π/2,0,π/2,π}PDF는 직사각형입니다. 일부 노드는α{π/4,π/4,π/4,π/4} 최악의 경우가 큰 삼각형 PDF를 제공합니다. 1) 점근 추정치의 최대 절대 크기 오차 2/2 양자화 단계 및 2) 최대 절대 위상 오차 2/2 타임스 아크 신 양자화 단계의.

중간 단계에서 PDF는 다음과 같습니다.

중급 PDF
그림 4. 공유 PDF α=π/8.

Dan이 제안한 바와 같이, PDF는 또한 크기 및 위상 오류 축에 투영 된 I 및 Q 오류 의 직사각형 PDF 의 컨볼 루션입니다 . 투영 된 PDF 중 하나의 너비는|코사인(α)|이고 다른 쪽의 너비는 |(α)|. 그들의 합산 분산은코사인2(α)/12+2(α)/12=1/12, 균일 α.

초기 위상과 복소 정현파 주파수와 샘플링 시퀀스의 합리적인 수 비율의 일부 "의사 운이"조합이 반복 시퀀스의 모든 샘플에 대해 작은 오차만을 제공 할 수 있습니다. 도 1에 도시 된 오차의 대칭으로 인해, 최대 절대 오차 의미에서, 그 주파수는 원에서 방문한 포인트의 수가 2의 배수 인 이점이있다. 왜냐하면 운 (낮은 오차)이 필요하기 때문이다. 포인트의 절반 만. 나머지 지점의 오류는 첫 번째 오류와 중복되며 부호가 뒤집 힙니다. 6, 4 및 12의 최소 배수는 더 큰 이점을 갖습니다. 정확한 규칙이 무엇인지 잘 모르겠습니다. 왜냐하면 규칙이 여러 개인 것에 관한 것이 아니기 때문입니다. 그것' 모듈로 산술과 결합 된 그리드 대칭에 관한 것입니다. 그럼에도 불구하고 의사 난수 오류는 결정론 적이므로 철저한 검색으로 최상의 배열을 알 수 있습니다. RMS (root-mean-square) 절대 오차 감지에서 최상의 배열을 찾는 것이 가장 쉽습니다.

유사 운임 배열에서의 RMS 절대 오차세부 묘사
그림 5. 위) 정사각 양자화 그리드를 사용하여 다양한 오실레이터 비트 깊이에 대한 복잡한 IQ 오실레이터에서 가장 낮은 RMS 절대 양자화 오류 . pseudolucky 배열에 대한 철저한 검색을위한 소스 코드는 답의 끝에 있습니다. 하단) 세부 사항, 비교를 위해 표시 (연한 파란색) RMS 절대 양자화 오차의 점근 추정 1/6/, ...에 대한 =2케이1, 어디 케이+1 발진기 비트 수입니다.

가장 두드러진 오차 주파수의 진폭은 절대 RMS 절대 오차를 넘지 않습니다. 8 비트 발진기의 경우 특히 좋은 선택은 다음과 같습니다.12 대략 단위 원에 위치한 점 :

{(0,±112),(±112,0),(±97,±56),(±56,±97)}112.00297611139371

각도 순서가 증가함에 따라 복소 평면에서 이러한 점을 통과하는 이산 복합 정현파는 5 차 고조파 왜곡 만가집니다. 91.5 답변의 끝에 옥타브 소스 코드에 의해 확인 된 기본과 비교하여 dB.

낮은 RMS 절대 양자화 오차를 얻기 위해 주파수는 대략적인 단계와 같이 순서대로 포인트를 통과 할 필요가 없습니다. [0,1,2,,4,5,6,7,8,9,10,11]2π/12 주파수 1/12샘플링 주파수를 곱한 것입니다. 예를 들어 주파수5/12 샘플링 주파수는 같은 포인트이지만 다른 순서로 진행됩니다. [0,5,10,,8,1,6,11,4,9,2,7]2π/12. 5와 12가 coprime 이기 때문에 이것이 작동하는 것 같습니다 .

가능한 완벽한 배열에 대해, 정현파의 주파수가 샘플링 주파수의 4 분의 1 인 경우 오차는 모든 지점에서 정확히 0이 될 수 있습니다. π/2샘플 당). 정사각형 그리드 에는 다른 완벽한 배열이 없습니다 . 육각형 그리드 또는 I 또는 Q 축 중 하나가 (허니컴 그리드의 두 번째 행마다 동일) π/샘플 당 완벽하게 작동합니다. 이러한 스케일링은 아날로그 도메인에서 수행 될 수 있습니다. 이것은 그리드의 대칭 축의 수를 증가 시키며, 의사 운이 (pseudolucky) 배열에 주로 유리한 변화를 가져옵니다.

스케일링 계수 sqrt (3)를 가진 사각형이 아닌 사각형 격자에 대한 의사 운임 배열에서의 RMS 절대 오차
그림 6. 다양한 오실레이터 비트 깊이에 대한 복잡한 IQ 오실레이터에서 가능한 가장 낮은 RMS 절대 양자화 오류.

특히, 원에 30 개의 점이있는 8 비트 발진기의 경우 가장 작은 RMS 절대 오차는 정사각형 그리드에서 -51.3dB이고 정사각형이 아닌 사각형 그리드에서 -62.5dB이며, 가장 낮은 RMS 절대 오차 pseudolucky 시퀀스에 오류가 있습니다 :

두 번째 순서의 오류
그림 7. 길이 30의 8 비트 유사 운임 시퀀스에 의한 IQ 평면의 오차 값은 가로로. 점은 대칭 축을 중심으로 뒤집어 진 세 개의 의사 운수에서 나옵니다.

IQ 클럭 신호에 대한 실질적인 경험이 없으므로 어떤 것이 중요한지 잘 모르겠습니다. DAC (Digital-to-Analog Converter)를 사용하는 클록 신호 생성에서는 의사 유사 배열을 사용하지 않는 한 더 높은 백색 잡음 플로어를 갖는 것이 더 높은 고조파 잡음 스펙트럼을 갖는 것보다 낫습니다. 반복적 인 양자화 오류에서 발생하는 스파이크 ( 코 히어 런트 샘플링 및 양자화 노이즈 분포 참조) ). 화이트 노이즈뿐만 아니라 이러한 스펙트럼 스파이크는 기생 커패시턴스를 통해 누출 될 수 있으며 시스템의 다른 부분에 원치 않는 영향을 미치거나 장치의 전자기 호환성 (EMC)에 영향을 줄 수 있습니다. 유사하게, 확산 스펙트럼 기술은 스펙트럼 스파이크를 낮은 피크 노이즈 플로어로 전환하여 EMC를 개선합니다.

C ++에서 철저한 의사 운임 배열 검색을위한 소스 코드는 다음과 같습니다. 밤새도록 최대 16 비트 발진기에 대한 최상의 배열을 찾을 수 있습니다.1미디엄100.

// Compile with g++ -O3 -std-c++11

#include <stdio.h>
#include <math.h>
#include <complex>
#include <float.h>
#include <algorithm>

// N = circle size in quantization steps
const int maxN = 127;
// M = number of points on the circle
const int minM = 1; 
const int maxM = 100;
const int stepM = 1;
// k = floor(log2(N))
const int mink = 2;
const double IScale = 1; // 1 or larger please, sqrt(3) is very lucky, and 1 means a square grid

typedef std::complex<double> cplx;

struct Arrangement {
  int initialI;
  int initialQ;
  cplx fundamentalIQ;
  double fundamentalIQNorm;
  double cost;
};

int main() {
  cplx rotation[maxM+1];
  cplx fourierCoef[maxM+1];
  double invSlope[maxM+1];
  Arrangement bestArrangements[(maxM+1)*(int)(floor(log2(maxN))+1)];
  const double maxk(floor(log2(maxN)));
  const double IScaleInv = 1/IScale;
  for (int M = minM; M <= maxM; M++) {
    rotation[M] = cplx(cos(2*M_PI/M), sin(2*M_PI/M));
    invSlope[M] = tan(M_PI/2 - 2*M_PI/M)*IScaleInv;
    for (int k = 0; k <= maxk; k++) {
      bestArrangements[M+(maxM+1)*k].cost = DBL_MAX;
      bestArrangements[M+(maxM+1)*k].fundamentalIQNorm = 1;
    }
  }
  for (int M = minM; M <= maxM; M += stepM) {
    for (int m = 0; m < M; m++) {
      fourierCoef[m] = cplx(cos(2*M_PI*m/M), -sin(2*M_PI*m/M))/(double)M;
    }
    for (int initialQ = 0; initialQ <= maxN; initialQ++) {
      int initialI(IScale == 1? initialQ : 0);
      initialI = std::max(initialI, (int)floor(invSlope[M]*initialQ));
      if (initialQ == 0 && initialI == 0) {
    initialI = 1;
      }
      for (; initialI*(int_least64_t)initialI  <= (2*maxN + 1)*(int_least64_t)(2*maxN + 1)/4 - initialQ*(int_least64_t)initialQ; initialI++) {
    cplx IQ(initialI*IScale, initialQ);
    cplx roundedIQ(round(real(IQ)*IScaleInv)*IScale, round(imag(IQ)));
        cplx fundamentalIQ(roundedIQ*fourierCoef[0].real());
    for (int m = 1; m < M; m++) {
      IQ *= rotation[M];
      roundedIQ = cplx(round(real(IQ)*IScaleInv)*IScale, round(imag(IQ)));
          fundamentalIQ += roundedIQ*fourierCoef[m];
    }
    IQ = fundamentalIQ;
    roundedIQ = cplx(round(real(IQ)*IScaleInv)*IScale, round(imag(IQ)));
    double cost = norm(roundedIQ-IQ);
    for (int m = 1; m < M; m++) {
      IQ *= rotation[M];
      roundedIQ = cplx(round(real(IQ)*IScaleInv)*IScale, round(imag(IQ)));
      cost += norm(roundedIQ-IQ);
    }
    double fundamentalIQNorm = norm(fundamentalIQ);
    int k = std::max(floor(log2(initialI)), floor(log2(initialQ)));
    //  printf("(%d,%d)",k,initialI);
    if (cost*bestArrangements[M+(maxM+1)*k].fundamentalIQNorm < bestArrangements[M+(maxM+1)*k].cost*fundamentalIQNorm) {
      bestArrangements[M+(maxM+1)*k] = {initialI, initialQ, fundamentalIQ, fundamentalIQNorm, cost};
    }
      }
    }
  }
  printf("N");
  for (int k = mink; k <= maxk; k++) {
    printf(",%d-bit", k+2);
  }
  printf("\n");
  for (int M = minM; M <= maxM; M += stepM) {
    printf("%d", M);
    for (int k = mink; k <= maxk; k++) {
      printf(",%.13f", sqrt(bestArrangements[M+(maxM+1)*k].cost/bestArrangements[M+(maxM+1)*k].fundamentalIQNorm/M));
    }
    printf("\n");
  }

  printf("bits,M,N,fundamentalI,fundamentalQ,I,Q,rms\n");
  for (int M = minM; M <= maxM; M += stepM) {
    for (int k = mink; k <= maxk; k++) {
      printf("%d,%d,%.13f,%.13f,%.13f,%d,%d,%.13f\n", k+2, M, sqrt(bestArrangements[M+(maxM+1)*k].fundamentalIQNorm), real(bestArrangements[M+(maxM+1)*k].fundamentalIQ), imag(bestArrangements[M+(maxM+1)*k].fundamentalIQ), bestArrangements[M+(maxM+1)*k].initialI, bestArrangements[M+(maxM+1)*k].initialQ, sqrt(bestArrangements[M+(maxM+1)*k].cost/bestArrangements[M+(maxM+1)*k].fundamentalIQNorm/M));
    }
  }
}

다음에서 찾은 첫 번째 예제 시퀀스를 설명하는 샘플 출력 IScale = 1:

bits,M,N,fundamentalI,fundamentalQ,I,Q,rms
8,12,112.0029761113937,112.0029761113937,0.0000000000000,112,0,0.0000265717171

다음으로 찾은 두 번째 예제 시퀀스를 설명하는 샘플 출력 IScale = sqrt(3):

8,30,200.2597744568315,199.1627304588310,20.9328464782995,115,21,0.0007529202390

첫 번째 예제 시퀀스를 테스트하기위한 옥타브 코드 :

x = [112+0i, 97+56i, 56+97i, 0+112i, -56+97i, -97+56i, -112+0i, -97-56i, -56-97i, 0-112i, 56-97i, 97-56i];
abs(fft(x))
20*log10(abs(fft(x)(6)))-20*log10(abs(fft(x)(2)))

두 번째 예제 시퀀스를 테스트하기위한 옥타브 코드 :

x = exp(2*pi*i*(0:29)/30)*(199.1627304588310+20.9328464782995i);
y = real(x)/sqrt(3)+imag(x)*i;
z = (round(real(y))*sqrt(3)+round(imag(y))*i)/200.2597744568315;
#Error on IQ plane
star = z-exp(2*pi*i*(0:29)/30)*(199.1627304588310+20.9328464782995i)/200.2597744568315;
scatter(real(star), imag(star));
#Magnitude of discrete Fourier transform
scatter((0:length(z)-1)*2*pi/30, 20*log10(abs(fft(z))/abs(fft(z)(2)))); ylim([-120, 0]);
#RMS error:
10*log10((sum(fft(z).*conj(fft(z)))-(fft(z)(2).*conj(fft(z)(2))))/(fft(z)(2).*conj(fft(z)(2))))

아주 좋아요 각 축 I 및 Q의 크기는 균일 한 것으로 근사합니다. 우리가 두 개의 균일 분포 분포를보고 있는지 궁금합니다. 결과 히스토그램을 사용해 보셨습니까? 복잡한 신호의 진폭 분포가 삼각형 일 수도 있다는 것을 사용하고있는이 확인되지 않은 논리로도 가정합니까? 샘플링 클럭이 적절할 때 발생할 수있는 일에 대한 통찰력이 있습니까?
Dan Boschen

그러나 나는 그것이 균일하다고 제안하지 않기 위해 질문을 업데이트 할 것입니다!
Dan Boschen

내 업데이트를 참조하십시오-삼각형 분포로 의심을 시뮬레이션하고 확인했습니다. 분포는 각도에 따라 균일하고 삼각형 사이에서 변할 것 같습니다 (설명은 내 업데이트 참조). 따라서 각도가 균일하게 분포되면 전체적으로 둥근 분포로 끝나야합니다.
Dan Boschen

1
@OlloNiemitalo 매우 시원합니다. 단위 원의 위치가 샘플링에 비례하도록 제한하는 경우 발생할 수있는 상황 (특히 위상 오류 구성 요소)에 대한 추가 통찰력이 있습니까? 단일 복합 톤의 회전 속도의 고정 배수를 의미합니까? 확실히 샘플링 속도가 증가함에 따라 이것은 당신이 보여준 것에 접근 할 것입니다. 그러나 선택에 비례하여 선택하는 것을 제한 할 때 위상 성분과 그 속도를 수학적으로 어떻게 설명 할 수 있습니까?
Dan Boschen

1
이것을 씹어 주시고 답변이있을 수있는 방향을 알려주십시오. 비율이 짝수의 정수 배수 인 경우 패턴이주기 당 두 번 반복 된 다음 더 높은 2의 거듭 제곱으로 나눌 수있는 배수에 대해 더 빠르게 곱합니다. 모듈로 수 이론에서 결정된 패턴은 실제로 대답이 될 수있는 곳입니다.
Dan Boschen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.