QPSK調製解調Matlab實現(ing待補充說明)

自寫

%QPSK
close all;clc;
%思路:1.輸入一組隨機初始信息x=[01矩陣];
%      2.按兩兩一組通過for循環判別4種組合,分別對應星座圖4個點
%      3.做星座圖        
%      a.過程中考慮過將01序列兩兩分開表示出來,不知是否有必要,未實現
%      b.考慮兩兩分開後直接定位一個組合,映射到星族圖,未實現.利用y-
a=randi([0,1],1,20) %產生一組隨機初始信息矩陣
[r,c] = size(a)     % 讀取行r、列c
y=[];  p=1; 
 for u = 1:r      % 建立for循環嵌套
    for t=1:2:c
        k=t+1;
        if a(u,t)==0&&a(u,k)==0 
            y(p)=-1-1i;
        elseif a(u,t)==0&&a(u,k)==1
            y(p)=-1+1i;
        elseif a(u,t)==1&&a(u,k)==0 
          y(p)=1-1i;
        else a(u,t)==1&&a(u,k)==1
          y(p)=1+1i; 
        end
        p=p+1;
    end
 end                             %for循環,將4中組合映射到星座圖位置
    scatterplot(y)               %畫星座圖
%     v=pskdemod(y,4)
%     scatterplot(v) 
ys = awgn(y,10);
scatterplot(ys)
[n,m] = size(ys)
q=[];j=1;
for b=1:n      % qpsk解調
    for d=1:m
        if abs(ys(b,d))<0&&imag(ys(b,d))<0
            q(b,j)=0;q(b,j+1)=0; 
        elseif abs(ys(b,d))<0&&imag(ys(b,d))>0
            q(b,j)=0;q(b,j+1)=1;
        elseif  abs(ys(b,d))>0&&imag(ys(b,d))<0
            q(b,j)=1;q(b,j+1)=0;
        else  abs(ys(b,d))>0&&imag(ys(b,d))>0
            q(b,j)=1;q(b,j+1)=1;
        end
        j=j+2;
    end
end
ys
a
q
numErrs = symerr(a,q) %輸出與輸入相比,計算錯誤比特數

歸一化相關轉於:https://blog.csdn.net/hudada19/article/details/97623075
星座映射歸一化因子是如何得到的?

答:所有能量求平均後開方得到的就是波形幅度值,其倒數就是歸一化因子。比如,

比如16QAM,取值爲,能量爲2有4個星座點,爲10有8個點(±1±3i),爲18有4個點,共有能量72+80+8=160,然後這16個點的等概率分佈是16分之1,所以要160除以16=10,這是平均能量,其平均後的波形幅度爲sqrt(10),而QPSK共4個能量爲2的星座,出現概率爲四分之一,所以爲8除以4=2,結果爲sqrt(2),其他類推。
能量(功率)歸一化有什麼用?

答:添加功率歸一化因子,目的在於使得不同調制方式(或者說對於所有映射方式)都能夠取得相同的平均功率。

實際上,歸一化是爲了方便系統性能的比較,所以就要分清比較的模塊是什麼。比如,信道編碼的增益問題,無論有無信道編碼,比特能量是一樣的,所以比較要以Eb/No爲基準,而不是以進入信道前的符號能量Es/No爲基準。再比如,在比較空時碼系統和單天線系統中,還是以進入時空碼編碼前信號能量爲基準,那麼發送時的總能量一致,即時空碼系統中各天線發射功率總和應和單天線系統發射功率相同。一般而言,歸一化都在發射端處理。

在仿真OFDM的IFFT變換時,爲什麼要乘以sqrt (fft的點數) 進行歸一化?

答:在matlab中做完IFFT後要乘以sqrt(fft的點數),這樣才能保證時域和頻域上的功率相同,否則在計算功率上容易出錯,如果不乘的話你只要知道也是可以的。至於信號功率歸一化,是爲了更方便的計算SNR,是爲了在相同的標準下比較性能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章