視覺化星座圖與通道效應

  好久沒有更新文章了。其實就在寫這篇的當下,還有十幾份草稿未完成,看來我的拖延症還在發威。這篇文章來介紹一個視覺化星座圖的方法,也可以用來理解通道對傳送符號的影響。


  這個視覺化的概念是這樣的:把星座圖上各個星座點(複數)分為兩個組成成分:振幅 (magnitude) 和相位 (phase),將振幅對應到 HSV 色彩表示法中的飽和度 S (saturation,又稱作彩度),相位對應到 HSV 當中的色相 H (hue),想法還蠻直覺的,振幅越小代表能量越小,應該以較淺的顏色表示,反之亦然。


  詢問 Gemini 才知道,在複變分析也有相似的視覺化工具,稱作 Domain Coloring,用來呈現複數函數各點的振幅與相位。不過好像還沒有人應用在星座圖的視覺化。(可能是因為視覺化這個東西沒什麼用吧,演算法跑一跑就解決的事。)

程式碼

  程式以 MATLAB 編寫,可以從 Github 下載使用。最重要的部分為函式 mat2rgb

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function rgb = mat2rgb(X)
% convert matrix X to rgb matrix

persistent MAX_SATURATION;
if isempty(MAX_SATURATION)
MAX_SATURATION = 0;
end

h = (angle(X) + pi) / (2 * pi); % hue (color)
s = abs(X);
if MAX_SATURATION == 0
MAX_SATURATION = max(s(:));
end
s = s / MAX_SATURATION; % saturation (grayness)
v = ones(size(X)); % value (brightness)

rgb = hsv2rgb(cat(3, h, s, v));
end

  其中 persistent 變數 MAX_SATURATION 可以確保單次執行產生的每一張圖,振幅對應到的彩度都是相同的。

Demo

  來展示一下視覺化的效果。下面是 64-QAM 的星座圖上色版本。


視覺化 64-QAM 星座圖。

  基於這個色彩對應,下面三張圖是某個 32 X 32 的調變符號矩陣在 DD domain、DT domain 以及 TF domain 的樣子(符號在 DD domain 調變)。可以觀察到能量被不均勻的散佈在時頻空間的情況。


視覺化 DD domain 矩陣,橫軸為 Doppler。

視覺化 DT domain 矩陣,橫軸為時間。

視覺化 TF domain 矩陣,橫軸為時間。

  接著來看看雙選擇性通道 (doubly-selective channel) 下,DD domain 調變符號受到的影響。假設我們在矩陣的中央放置 16 X 16 的資料,只有三種顏色 aka 三種相異符號;其餘位置則是 zero padding。


傳送端的調變符號,橫軸為 Doppler。

  訊號經過一個四條路徑的通道,並且假設整數 Doppler:

1
2
h = [1, 0.28 - 0.15j, -0.35 + 0.32j, 0, 0, 0.15 + 0.18j];
nu = [0, 6, -4, 0, 0, 2];

  結果如下圖,除了原本的符號區塊外,跑出來三個在 DD domain 位移的 replica,而且這些 replica 的色彩有所改變,就是受到 complex channel gain 的影響。


接收端的調變符號,橫軸為 Doppler。

結語

  本文寫作當下,RTL-SDR、Meshtastic、OFDM 系列文、Transformer 和 iTransformer 介紹文等等,都還擱置在草稿資料夾中。過去,我好幾次嘗試建立一個自律的規範,全部都以失敗告終(沒有一個持續到今);每天都過得很悠哉,不顧自己完全有可能被 AI 取代的現實。話說回來,研究所畢業那年會不會戴鋼盔、繫 S 腰前往作戰位置,還很難說咧,也許被 AI 取代的未來不會存在。


  回到正題。和 Gemini 討論,這個視覺化方法也可以搭配影像處理演算法或深度學習方法,來分析圖裡的資訊。不過轉換成影像的計算量可能就很大了,也許並不實用。