How to extract the unwrapped phase of exp(1i*2*pi*f_c*delta*sin(theta)/c)
Show older comments
I just want to obtain 2*pi*f_c*delta*sin(theta)/c from exponential, but the command 'angle' and 'phase' will return the wrap phase.
I have tried 'phase = dsp.PhaseExtractor('TreatFramesIndependently',false)', then ploted three kinds of matlab computation.
The results turns out in the following figure.


It still have an intercept between the phase I want(Red line) and the output of dsp.PhaseExtractor(Blue line).
please give me the suggestion! Thank you!
clear;close all;clc;
f_c=2*10^9;
c=3*10^8;
D=50;
theta_deg=-D/2:D/2;
theta=deg2rad(theta_deg);
dis=zeros(D,1);
delta=6*0.15; % delta will change
for j=1:D
dis(j)=exp(1i*2*pi*f_c*delta*sin(theta(j))/c);
end
phase = dsp.PhaseExtractor('TreatFramesIndependently',false);
ph_ex=phase(dis);
ph_Iwant=2*pi*f_c*delta*sin(theta)/c; %unwrap phase
ph_ph=angle(dis);
plot(ph_ex,'LineWidth',1)
hold on
plot(ph_Iwant,'LineWidth',1)
plot(ph_ph,'LineWidth',1)
grid;ylabel('angle(rad/s)')
title('delta=',num2str(delta));
legend('extract','I want','wrap phase')
Answers (1)
Nikhilesh
on 29 Mar 2023
0 votes
Please have a look at the unwrap function.
Categories
Find more on Spectral Measurements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!