⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 phasereg.m

📁 有关于相位
💻 M
字号:
clear all;
close all;

fc = 1000;
fs = 9000;
amp = 1;
RB = 10;


% [ySig, t, vSym, PSig] =  CreateNPSK(8, fc, amp, fs, RB, [0 1 2 3 4 5 6 7]);
[ySig, t, vSym, PSig] =  CreateNPSK(4, fc, amp, fs, RB, [0 1 2 3 0 1 2 3]);
% [ySig, t, vSym, PSig] =  CreateNPSK(2, fc, amp, fs, RB, [0 1 0 1 0 1 0 1]);
% plot(t, ySig); grid on;

SNR = 0;
snRatio = 10.^(SNR/10);
PNoise = PSig / snRatio;
Noise = NorNoise(PNoise, length(t));
ySig = ySig + Noise;

% weakIndex = find(abs(ySig)<0.2);
yHlb = hilbert(ySig);
rawPhase = unwrap(angle(yHlb));
CarPhase = 2*pi*fc*(0:1/fs:(1/fs*(length(ySig)-1)));    %载波相位
relPhase = rawPhase - CarPhase;                         %相对相位偏移
% rawPhase(weakIndex) = [];
% plot(rawPhase); grid on;


% 方法一,差分
% N = fs/RB;
% Num = length(rawPhase);
% sample = rawPhase(1:N);
% for n = 1: Num
%     yy(n) = rawPhase(n) - sample(mod(n, N) + 1);
% end;

norPhase = relPhase - floor(relPhase/2/pi) * 2*pi;      %折算到0-2pi中
% hist(norPhase,100);
norPhase = norPhase - mean(norPhase);                   %归一化


%****************************************************************
%方法:计算各阶矩特性,和标准相位特性对比;
StdPhase;
% plot(norPhase);grid on;
mean(norPhase.^2)
mean(norPhase.^4)
mean(norPhase.^6)
%****************************************************************



%****************************************************************
%方法二,按照角度划分来计算落入标准区域以内的点数
std2Phase = [-pi/2 pi/2];
std4Phase = [-pi*3/4 -pi/4 pi/4 pi*3/4];
std8Phase = [-pi*7/8 -pi*5/8 -pi*3/8 -pi/8 pi/8 pi*3/8 pi*5/8 pi*7/8];

bingle2 = 0;
bingle4 = 0;
bingle8 = 0;

Index2 = 0;
i2 = 1;
Index4 = 0;
i4 = 1;
Index8 = 0;
i8 = 1;

for i = 1:length(norPhase)
    for j = 1:length(std2Phase)
        if ( norPhase(i)>std2Phase(j)-pi/4 & norPhase(i)<std2Phase(j)+pi/4)
%          if ( norPhase(i)>std2Phase(j)-pi/16 & norPhase(i)<std2Phase(j)+pi/16)
            bingle2 = bingle2 + 1;
            Index2(i2) = i;
            i2 = i2 + 1;
            break;
        end;        
    end
    
    for j = 1:length(std4Phase)
        if ( norPhase(i)>std4Phase(j)-pi/8 & norPhase(i)<std4Phase(j)+pi/8)
%         if ( norPhase(i)>std4Phase(j)-pi/32 & norPhase(i)<std4Phase(j)+pi/32)
            bingle4 = bingle4 + 1;
            Index4(i4) = i;
            i4 = i4 + 1;
            break;
        end;        
    end
    for j = 1:length(std8Phase)
        if ( norPhase(i)>std8Phase(j)-pi/16 & norPhase(i)<std8Phase(j)+pi/16)
%         if ( norPhase(i)>std8Phase(j)-pi/64 & norPhase(i)<std8Phase(j)+pi/64)
            bingle8 = bingle8 + 1;
            Index8(i8) = i;
            i8 = i8 + 1;
            break;
        end;        
    end
end

bingle2
bingle4
bingle8


plot(Index2);
figure;
plot(Index4);
figure;
plot(Index8);

%***************************************************************************************
%方法二的增强版,计算落入标准区域的点的连续性(通过标准差来判断)
DI2 = diff(Index2);
DI4 = diff(Index4);
DI8 = diff(Index8);

std(DI2)
std(DI4)
std(DI8)
% norPhase = fft(zz2);
% plot(abs(norPhase)); grid on;
% std(zz2)
% plot(yy); grid on;
% ************************************************************


% std(rawPhase)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -