用線性代數推導碼分多址(CDMA)

什么是碼分多址

碼分多址:CDMA允許多個用戶同時、在同一頻率上傳輸數據。它通過給每個用戶分配唯一的、相互正交的二進制序列來實現區分。用戶的數據比特被這個碼片序列擴展成一個高速率的信號,然后在接收端通過相同的碼片序列進行相關運算來回復原數據

關鍵概念

  • 比特:用戶要發送的原始數據(0/1)
  • 碼片:組成碼片序列的單個二進制元素(通常+1和-1表示)
  • 碼片序列:分配給用戶的唯一二進制序列。它的長度(碼片速率)遠高于原始數據比特的速率(比特速率)。碼片速率/比特速率=擴頻因子碼片速率/比特速率=擴頻因子碼片速率/比特速率=擴頻因子
  • 正交性:兩個碼片序列A和B正交,當且僅當它們的歸一化內積為0:(A?B)/N=0(A \cdot B)/N=0(A?B)/N=0,其中N為序列長度
  • 擴頻:用碼片序列調制數據比特的過程,將窄帶信號轉換為寬帶信號
  • 解擴/相關:接收端用發送端相同的碼片序列與接收到的混合信號進行內積運算,回復原始數據比特的過程

CDMA 完整流程

  1. 分配碼片序列

    • 在通信開始前,基站為每個需要同時通信的用戶分配唯一的、預先定義好的、相互正交的二進制序列
  2. 發送端數據處理

    • 數據比特準備:用戶準備好要發送的原始數據比特
    • 比特到符號的映射(可選):為了簡化處理,通常將比特0映射為符號-1,將比特1映射為+1,我們記這個符號為D(D = -1D = +1)
    • 擴頻
      • 用戶使用分配給自己的碼片序列C = [c1, c2, c3, ..., cN](其中每個ci+1-1)對數據符號D進行調制
      • 將碼片序列C乘以數據符號D
      • 生成一個擴展后的信號序列S=D?C=[D?c1,D?c2,D?c3,...,D?cN]S=D * C = [D*c1, D*c2, D*c3, ..., D*cN]S=D?C=[D?c1,D?c2,D?c3,...,D?cN]
      • 如果D = +1S就是C本身(原碼),如果D = -1S就是C取反(反碼)
      • 帶寬擴展:原始數據比特D的持續時間被擴展成N個碼片的持續時間。信號帶寬被擴展了N倍(擴頻因子為N
  3. 空中接口(混合信號)

    • 所有用戶的擴展后信號序列 S_user1, S_user2, ..., S_userK,同時在同一個無線信道上傳輸
    • 在接收天線處,接收到的信號R是所有這些用戶擴展信號的線性疊加,再加上噪聲Noise,即:Suser1+Suser2+...+SuserK+NoiseS_user1 + S_user2 + ... + S_userK + NoiseSu?ser1+Su?ser2+...+Su?serK+Noise
  4. 接收端解碼

    • 設接收端想要回復User X的數據
    • 解擴/相關
      • 接收端用接收到的混合信號R與User X的碼片序列cx進行逐碼片相乘
      • 對相乘后的結果進行求和,并將求和結果除以碼片序列長度N(歸一化)
      • 即:Result=(R?Cx)/N=([R1,R2,...,RN]?[Cx1,Cx2,...,CxN])/N=(R1?Cx1+R2?Cx2+...+RN?CxN)/NResult = (R \cdot Cx) / N = ([R1, R2, ..., RN] \cdot [Cx1, Cx2, ..., CxN]) / N = (R1*Cx1 + R2*Cx2 + ... + RN*CxN) / NResult=(R?Cx)/N=([R1,R2,...,RN]?[Cx1,Cx2,...,CxN])/N=(R1?Cx1+R2?Cx2+...+RN?CxN)/N
  5. 解釋結果:

    • 由于碼片序列的正交性,其他用戶的信號(S_userY, Y≠X)與 Cx 的相關結果理論上接近于 0(理想正交時為 0),它們的影響被極大地抑制了。
    • 噪聲的影響會被平均掉一部分(處理增益)。
    • 目標用戶 User X 的信號 Sx = Dx * CxCx 的相關結果為:
      (Sx ? Cx) / N = ((Dx * Cx) ? Cx) / N = Dx * (Cx ? Cx) / N = Dx * (N) / N = Dx
      • 因為 (Cx ? Cx) = c1*c1 + c2*c2 + ... + cN*cN = (+1或-1的平方和) = N
    • 因此,最終的相關結果 Result ≈ Dx(目標用戶發送的原始符號,+1 或 -1)。
  6. 符號到比特映射

    • 如果 Result > 0(接近 +1),則判決為比特 1
    • 如果 Result < 0(接近 -1),則判決為比特 0

具體舉例

場景: 兩個用戶 Alice (A) 和 Bob (B) 要同時向基站發送數據。基站使用長度為 4 的 Walsh 碼。
分配碼片序列:

  • Alice (A) 的碼片序列: Ca = [+1, +1, +1, +1]
  • Bob (B) 的碼片序列: Cb = [+1, -1, +1, -1]
  • 驗證正交性:(Ca ? Cb) / 4 = ((+1)(+1) + (+1)(-1) + (+1)(+1) + (+1)(-1)) / 4 = (1 -1 +1 -1)/4 = 0/4 = 0。完美正交。

發送數據:

  1. Alice 要發送比特 1
    • 映射為符號 Da = +1
    • 擴頻:Sa = Da * Ca = (+1) * [+1, +1, +1, +1] = [+1, +1, +1, +1]
  2. Bob 要發送比特 0
    • 映射為符號 Db = -1
    • 擴頻:Sb = Db * Cb = (-1) * [+1, -1, +1, -1] = [-1, +1, -1, +1]

空中混合信號 R:
R = Sa + Sb = [+1, +1, +1, +1] + [-1, +1, -1, +1] = [ (1-1), (1+1), (1-1), (1+1) ] = [0, +2, 0, +2]

基站接收并解碼:

  • 解碼 Alice 的數據 (使用 Ca = [+1, +1, +1, +1]):

    1. 逐碼片相乘:R * Ca = [0*+1, +2*+1, 0*+1, +2*+1] = [0, +2, 0, +2]
    2. 求和:0 + 2 + 0 + 2 = +4
    3. 歸一化:Result_A = +4 / 4 = +1
    4. 判決:+1 > 0 => 比特 1 (Alice 發送的數據正確恢復)。
  • 解碼 Bob 的數據 (使用 Cb = [+1, -1, +1, -1]):

    1. 逐碼片相乘:R * Cb = [0*+1, +2*(-1), 0*+1, +2*(-1)] = [0, -2, 0, -2]
    2. 求和:0 + (-2) + 0 + (-2) = -4
    3. 歸一化:Result_B = -4 / 4 = -1
    4. 判決:-1 < 0 => 比特 0 (Bob 發送的數據正確恢復)。

CDMA線代推導

假設有k個用戶共享信道,碼片序列長度為m(要求k≤mk\le mkm,以確保正交向量組存在),碼向量c1,c2,…,ck\mathbf{c}_1, \mathbf{c}_2, \dots, \mathbf{c}_kc1?,c2?,,ck?構成正交向量組,且假設已歸一化,即(∥ci∥2=1(\|\mathbf{c}_i\|^2=1(ci?2=1,非歸一化情況將在后面討論)

  1. 碼序列的正交條件

    • 碼向量滿足
      ci?cj={1if?i=j0if?i≠j \mathbf{c}_i \cdot \mathbf{c}_j = \begin{cases} 1 & \text{if } i = j \\ 0 & \text{if } i \neq j \end{cases} ci??cj?={10?if?i=jif?i=j?
      這等價于碼序列矩陣 (C=[c1,c2,…,ck])(C = [\mathbf{c}_1, \mathbf{c}_2, \dots, \mathbf{c}_k])(C=[c1?,c2?,,ck?])的列向量組是標準正交向量組,即 (CTC=Ik)(C^T C = I_k)(CTC=Ik?)(k×k)(k \times k)(k×k) 單位矩陣)
  2. 信號生成

    • 每個用戶 發送數據did_idi?(例如二進制系統的di=±1d_i = \pm 1di?=±1
    • 發送信號是碼向量的線性組合:
      s=∑i=1kdici \mathbf{s} = \sum_{i=1}^k d_i \mathbf{c}_i s=i=1k?di?ci?
      這里,s∈Rm\mathbf{s} \in \mathbb{R}^msRm 是疊加后的信號向量
  3. 接收信號模型

    • 接收端收到信號 r\mathbf{r}r(忽略噪聲):
      r=s=∑i=1kdici \mathbf{r} = \mathbf{s} = \sum_{i=1}^k d_i \mathbf{c}_i r=s=i=1k?di?ci?
      實際中包括噪聲 n\mathbf{n}n,但為簡化,假設 n=0\mathbf{n} = \mathbf{0}n=0
  4. 信號分離(關鍵步驟!!)

    • 接收端計算 r\mathbf{r}r 與用戶 j 的碼向量 cj\mathbf{c}_jcj? 的內積:
      yj=r?cj=(∑i=1kdici)?cj y_j = \mathbf{r} \cdot \mathbf{c}_j = \left( \sum_{i=1}^k d_i \mathbf{c}_i \right) \cdot \mathbf{c}_j yj?=r?cj?=(i=1k?di?ci?)?cj?
    • 由內積的線性性質
      yj=∑i=1kdi(ci?cj) y_j = \sum_{i=1}^k d_i (\mathbf{c}_i \cdot \mathbf{c}_j) yj?=i=1k?di?(ci??cj?)
    • 由正交性,ci?cj=0\mathbf{c}_i \cdot \mathbf{c}_j = 0ci??cj?=0i≠ji \neq ji=j,且 cj?cj=1\mathbf{c}_j \cdot \mathbf{c}_j = 1cj??cj?=1
      yj=dj(cj?cj)+∑i≠jdi(ci?cj)=dj?1+∑i≠jdi?0=dj y_j = d_j (\mathbf{c}_j \cdot \mathbf{c}_j) + \sum_{i \neq j} d_i (\mathbf{c}_i \cdot \mathbf{c}_j) = d_j \cdot 1 + \sum_{i \neq j} d_i \cdot 0 = d_j yj?=dj?(cj??cj?)+i=j?di?(ci??cj?)=dj??1+i=j?di??0=dj?
      因此,接收端完美提取用戶 j 的數據:dj=yjd_j = y_jdj?=yj?

擴展到非歸一化碼序列

實際系統中,碼序列可能未歸一化(例如,使用二進制序列 {±1}\{\pm 1\}{±1})。設 ∥cj∥2=cj?cj≠1\|\mathbf{c}_j\|^2 = \mathbf{c}_j \cdot \mathbf{c}_j \neq 1cj?2=cj??cj?=1,但正交性仍保持:ci?cj=0\mathbf{c}_i \cdot \mathbf{c}_j = 0ci??cj?=0(當 i≠ji \neq ji=j)。

  • 發送信號仍為 r=∑i=1kdici\mathbf{r} = \sum_{i=1}^k d_i \mathbf{c}_ir=i=1k?di?ci?
  • 分離時:
    yj=r?cj=dj(cj?cj)+∑i≠jdi(ci?cj)=dj∥cj∥2 y_j = \mathbf{r} \cdot \mathbf{c}_j = d_j (\mathbf{c}_j \cdot \mathbf{c}_j) + \sum_{i \neq j} d_i (\mathbf{c}_i \cdot \mathbf{c}_j) = d_j \|\mathbf{c}_j\|^2 yj?=r?cj?=dj?(cj??cj?)+i=j?di?(ci??cj?)=dj?cj?2
  • 因此,數據恢復為:
    dj=yj∥cj∥2 d_j = \frac{y_j}{\|\mathbf{c}_j\|^2} dj?=cj?2yj??
    這里,∥cj∥2\|\mathbf{c}_j\|^2cj?2 是碼向量的范數平方(能量),在接收端已知。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/91836.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/91836.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/91836.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mac 配置svn

1.查看brew的版本&#xff1a;brew install subversion2.安裝brew命令&#xff1a;bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"3.把路徑添加到path環境變量&#xff1a;echo export PATH"/opt/homebrew/b…

使用 .NET Core 的原始 WebSocket

在 Web 開發中&#xff0c;后端存在一些值得注意的通信協議&#xff0c;用于將更改通知給已連接的客戶端。所有這些協議都用于處理同一件事。但鮮為人知的協議很少&#xff0c;鮮為人知的協議也很少。今天&#xff0c;將討論 WebSocket&#xff0c;它在開發中使用最少&#xff…

編程實現Word自動排版:從理論到實踐的全面指南

在現代辦公環境中&#xff0c;文檔排版是一項常見但耗時的工作。特別是對于需要處理大量文檔的專業人士來說&#xff0c;手動排版不僅費時費力&#xff0c;還容易出現不一致的問題。本文將深入探討如何通過編程方式實現Word文檔的自動排版&#xff0c;從理論基礎到實際應用&…

力扣經典算法篇-25-刪除鏈表的倒數第 N 個結點(計算鏈表的長度,利用棧先進后出特性,雙指針法)

1、題干 給你一個鏈表&#xff0c;刪除鏈表的倒數第 n 個結點&#xff0c;并且返回鏈表的頭結點。 示例 1&#xff1a;輸入&#xff1a;head [1,2,3,4,5], n 2 輸出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 輸入&#xff1a;head [1], n 1 輸出&#xff1a;[] 示例 3&…

VIT速覽

當我們取到一張圖片&#xff0c;我們會把它劃分為一個個patch&#xff0c;如上圖把一張圖片劃分為了9個patch&#xff0c;然后通過一個embedding把他們轉換成一個個token&#xff0c;每個patch對應一個token&#xff0c;然后在輸入到transformer encoder之前還要經過一個class …

【服務器與部署 14】消息隊列部署:RabbitMQ、Kafka生產環境搭建指南

【服務器與部署 14】消息隊列部署&#xff1a;RabbitMQ、Kafka生產環境搭建指南 關鍵詞&#xff1a;消息隊列、RabbitMQ集群、Kafka集群、消息中間件、異步通信、微服務架構、高可用部署、消息持久化、生產環境配置、分布式系統 摘要&#xff1a;本文從實際業務場景出發&#x…

LeetCode中等題--167.兩數之和II-輸入有序數組

1. 題目 給你一個下標從 1 開始的整數數組 numbers &#xff0c;該數組已按 非遞減順序排列 &#xff0c;請你從數組中找出滿足相加之和等于目標數 target 的兩個數。如果設這兩個數分別是 numbers[index1] 和 numbers[index2] &#xff0c;則 1 < index1 < index2 <…

【C# in .NET】19. 探秘抽象類:具體實現與抽象契約的橋梁

探秘抽象類:具體實現與抽象契約的橋梁 在.NET類型系統中,抽象類是連接具體實現與抽象契約的關鍵橋梁,它既具備普通類的狀態承載能力,又擁有類似接口的行為約束特性。本文將從 IL 代碼結構、CLR 類型加載機制、方法調度邏輯三個維度,全面揭示抽象類的底層工作原理,通過與…

Apache RocketMQ + “太乙” = 開源貢獻新體驗

Apache RocketMQ 是 Apache 基金會托管的頂級項目&#xff0c;自 2012 年誕生于阿里巴巴&#xff0c;服務于淘寶等核心交易系統&#xff0c;歷經多次雙十一萬億級數據洪峰穩定性驗證&#xff0c;至今已有十余年發展歷程。RocketMQ 致力于構建低延遲、高并發、高可用、高可靠的分…

永磁同步電機控制算法--弱磁控制(變交軸CCR-VQV)

一、原理介紹CCR-FQV弱磁控制不能較好的利用逆變器的直流側電壓&#xff0c;造成電機的調速范圍窄、效率低和帶載能力差。為了解決CCR-FQV弱磁控制存在的缺陷&#xff0c;可以在電機運行過程中根據工況的不同實時的改變交軸電壓給定uq?的值&#xff0c;實施 CCR-VQV弱磁控制。…

達夢數據守護集群搭建(1主1實時備庫1同步備庫1異步備庫)

目錄 1 環境信息 1.1 目錄信息 1.2 其他環境信息 2 環境準備 2.1 新建dmdba用戶 2.2 關閉防火墻 2.3 關閉Selinux 2.4 關閉numa和透明大頁 2.5 修改文件打開最大數 2.6 修改磁盤調度 2.7 修改cpufreq模式 2.8 信號量修改 2.9 修改sysctl.conf 2.10 修改 /etc/sy…

電感與電容充、放電極性判斷和電感選型

目錄 一、電感 二、電容 三、電感選型 一、電感 充電&#xff1a;左右-為例 放電&#xff1a;極性相反&#xff0c;左-右 二、電容 充電&#xff1a;左右-為例 放電&#xff1a;左右-&#xff08;與充電極性一致&#xff09; 三、電感選型 主要考慮額定電流和飽和電流。…

新建模范式Mamba——“Selectivity is All You Need?”

目錄 一、快速走進和理解Mamba建模架構 &#xff08;一&#xff09;從Transformer的統治地位談起 &#xff08;二&#xff09;另一條道路&#xff1a;結構化狀態空間模型&#xff08;SSM&#xff09; &#xff08;三&#xff09;Mamba 的核心創新&#xff1a;Selective SSM…

Python實現Word文檔中圖片的自動提取與加載:從理論到實踐

在現代辦公和文檔處理中&#xff0c;Word文檔已經成為最常用的文件格式之一。這些文檔不僅包含文本內容&#xff0c;還經常嵌入各種圖片、圖表和其他媒體元素。在許多場景下&#xff0c;我們需要從Word文檔中提取這些圖片&#xff0c;例如進行內容分析、創建圖像數據庫、或者在…

Kafka、RabbitMQ 與 RocketMQ 高可靠消息保障方案對比分析

Kafka、RabbitMQ 與 RocketMQ 高可靠消息保障方案對比分析 在分布式系統中&#xff0c;消息隊列承擔著異步解耦、流量削峰、削峰填谷等重要職責。為了保證應用的數據一致性和業務可靠性&#xff0c;各大消息中間件都提供了多種高可靠消息保障機制。本文以Kafka、RabbitMQ和Rock…

四足機器人遠程視頻與互動控制的全鏈路方案

隨著機器人行業的快速發展&#xff0c;特別是四足仿生機器人在巡檢、探測、安防、救援等復雜環境中的廣泛部署&#xff0c;如何實現高質量、低延遲的遠程視頻監控與人機互動控制&#xff0c;已經成為制約其應用落地與規模化推廣的關鍵技術難題。 四足機器人常常面臨以下挑戰&a…

把leetcode官方題解自己簡單解釋一下

自用自用&#xff01;&#xff01;&#xff01;leetcode hot 100

hive的sql優化思路-明白底層運行邏輯

一、首先要明白底層map、shuffle、reduce的順序之中服務器hdfs數據文件在內存與存儲之中是怎么演變的&#xff0c;因為hive的性能瓶頸基本在內存&#xff0c;具體參考以下他人優秀文章&#xff1a; 1.Hive SQL底層執行過程詳細剖析 2.Hive JOIN性能調優 二是要明白hive對應的…

驅動隔離芯片在現代工業上的卓越貢獻

在智能時代的精密齒輪中&#xff0c;驅動隔離芯片如同一位精通跨界語言的“安全架構師”&#xff0c;在高壓與低壓、危險與精密的交界處重構秩序。它不生產數據&#xff0c;卻是信息的守門人&#xff1b;不創造能量&#xff0c;卻是電流的馴獸師。從鋼鐵叢林到生命方舟&#xf…

使用MATLAB探索圓周率π的奇妙計算之旅

在數學的璀璨星河中,圓周率π無疑是最耀眼的明星之一。這個看似簡單的無理數蘊含著宇宙的奧秘,吸引著無數科學家和數學愛好者探索其計算方法。今天,我們將使用MATLAB這一強大的科學計算工具,踏上π的計算之旅,體驗從古典算法到現代技巧的奇妙過程。 1. 蒙特卡洛法:隨機的…