for Fast chirp modulation, it is no doubt that the 1D FFT denotes range, becasue range contributes the largest phase shift in IF, but for 2D-FFT and 3D-FFT, we see that radial velocity Vr and angle also causes phase shift in IF
from my MATLAB simulation, for some cases, the phase shift caused by angle is larger than radial velocity, so the 2D-FFT denotes angle information,not radial speed,
Am I wrong?
My code is
% File name: FMCW_FastChirp.m
% Syntax:
%
% Description:
% 1) Calculate IF expression of a single fast FMCW chirp Motivated by TI Corporate
% 2) this program illustartes why 1D-FFT denotes range, 2D-FFT denotes
% radial speed, and 3D-FFT denotes angle
% range -- occupy the most large energy
% velocity -- occupy the second large energy
% angle -- occupy the third large energy
% for example
%
% f_IF_Val1 = subs(f_IF2,[C,B,f0, Tc,theta,d],[3e8,24e9,150e6,30e-6,theta/180*pi,0.7*(3e8/24e9)/2 ]);
% pretty(f_IF_Val1)
%
%
% / pi theta \ / pi theta \
% 70000 sin| -------- | 7 Vr sin| -------- | / 2 \
% 16000000 R \ 180 / 8 R Vr \ 180 / | 32000000 Vr 8 Vr |
% ---------- + Vr + --------------------- - ------ - -------------------- + t | ----------- - ----- |
% 3 3 225 45000 \ 3 225 /
%
% Author: YangTianxi
% Contact: hitbuyi@163.com
% Date: 2017/05/19
close all;
clear all;
% parameter define
syms C % speed of light
syms R Vr tao % range,radial velocity,time delay
syms t % time
syms theta % DOA
syms Tc % sweep time of a single chirp
syms f0 % center frequency
syms B % band width
syms d % distance between 2 adjacent receive anttenna
f_TX = @(t)[f0 + B/Tc* t]; % frequency sweep of FMCW,sawtooth sweeping
phy_TX = @(t)[int(2*pi*f_TX(t),t,[0 t])]; % phase of transmitter signal
phy_RX = @(t)[subs(phy_TX(t),t, t-tao)]; % phase of received signal,shift tao from phy_TX
% after MIXER and low pass filter, phase of IF siganl is obtained
phy_IF0 = (phy_TX(t) - phy_RX(t)); %
% replace tao with expression of R,Vr,t
% tao = 2*(R + Vr*t +d*sin(theta))/C
% R: phase delay caused by range
% Vr*t : phase delay caused by object's moving
% d*sin(theta) : phase delay caused by angle, if theta = 0, radar's echo is perpendicular to array
phy_IF = subs(phy_IF0, tao, 2*(R + Vr*t +d*sin(theta))/C);
% to get IF,take differentiation with t,i.e., f = d(phase(t))/dt
f_IF0 = diff(phy_IF,'t')/(2*pi);
f_IF1 = expand(f_IF0);
f_IF2 = collect(f_IF1,t);
f_IF_Val1 = subs(f_IF2,[C,B,f0, Tc,theta,d],[3e8,24e9,150e6,30e-6,theta/180*pi,1*(3e8/24e9)/2 ]);
pretty(f_IF_Val1);
f_IF_Val2 = subs(f_IF2,[C,B,f0, Tc,theta,d],[3e8,77e9,500e6,30e-6,theta/180*pi,0.5*(3e8/77e9)/2 ]);
pretty(f_IF_Val2);