【雷達(dá)通信】基于多普勒連續(xù)波測速matlab源碼
一、簡介
1 多普勒效應(yīng)
多普勒效應(yīng)在我們?nèi)粘I钪杏泻芏?,比如?dāng)一輛救護(hù)車迎面駛來的時候,聽到聲音比原來高;而車離去的時候聲音的音高比原來低。
這個效應(yīng)是為紀(jì)念奧地利物理學(xué)家及數(shù)學(xué)家克里斯琴·約翰·多普勒(Christian Johann Doppler)而命名的,他于1842年首先提出了這一理論。據(jù)說是因為有一次一列火車從他身旁經(jīng)過,他發(fā)現(xiàn)火車從遠(yuǎn)而近時汽笛聲變響,音調(diào)變尖,而火車從近而遠(yuǎn)時汽笛聲變?nèi)酰粽{(diào)變低。他覺得很有意思,于是他就對這個現(xiàn)象去深入研究,從而提出了多普勒效應(yīng)。
多普勒效應(yīng)的主要內(nèi)容為物體輻射的波長因為波源和觀測者的相對運動而產(chǎn)生變化。在運動的波源前面,波被壓縮,波長變得較短,頻率變得較高(藍(lán)移 blue shift);在運動的波源后面時,會產(chǎn)生相反的效應(yīng)。波長變得較長,頻率變得較低(紅移 red shift);波源的速度越高,所產(chǎn)生的效應(yīng)越大。根據(jù)波紅(藍(lán))移的程度,可以計算出波源循著觀測方向運動的速度。
2 衛(wèi)星導(dǎo)航中的多普勒效應(yīng)

3 多普勒定速



二、源代碼
AI = ('winsound'); ?
%2. Add channels - Add one channel to AI. chan = addchannel(AI,1); ?
%3. Configure property values - Assign values to the basic setup properties, and ?
%create the variables blocksize and Fs, which are used for subsequent analysis. ?
%The actual sampling rate is retrieved since it may be set by the engine to a ?
%value that differs from the specified value. ?
%set(AI,'SampleRate',8000) ? ? ? ? ? ? ? ? ? ? ? ? ? ?
% 設(shè)置采樣速率為8000Hz
ActualRate = get(AI,'SampleRate'); ? ? ? ? ? ? ? ? ? ?
% 從AI中獲取實際采樣速率
set(AI,'TriggerChannel',chan) ? ? ? ? ? ? ? ? ? ? ? ?
% 設(shè)置觸發(fā)通道
set(AI,'TriggerType','software'); ? ? ? ? ? ? ? ? ? ?
% 設(shè)置觸發(fā)類型 ?
set(AI,'Triggercondition','rising'); ? ? ? ? ? ? ? ? ?
% 設(shè)置為電壓上升至某值后觸發(fā)
set(AI,'TriggerConditionValue',0.013); ? ? ? ? ? ? ? ?
% 設(shè)置觸發(fā)電壓值
set(AI, 'TriggerDelay', -1); ? ? ? ? ? ? ? ? ? ? ? ? ?
% 設(shè)置觸發(fā)時延 ?
set(AI, 'TriggerDelayUnits', 'seconds'); ? ? ? ? ? ? ?
% 設(shè)置觸發(fā)時延的單位
set(AI,'timeout',2) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
% 定義超時值
Fs = ActualRate; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
% 設(shè)置采樣速率 ?
clear data1; ?
start(AI) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
% 開始采樣
try ? ? ?
[data1,time]=getdata(AI); ? ? ? ? ? ? ? ? ? ? ? ?
% 將采樣得到的數(shù)據(jù)保存到data1,采樣時間保存到time ?
catch time=0;data1=0; ? ? ?
disp('A timeout occurred.');
end
subplot(2,1,1) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
% 繪制2行1列的第1張子圖
plot(time,data1) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
% 以時間為橫軸,數(shù)據(jù)為縱軸作圖
xlabel('Time (sec.)') ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
% 標(biāo)注橫坐標(biāo)
ylabel('Signal Level (Volts)') ? ? ? ? ? ? ? ? ? ? ?
% 標(biāo)注縱坐標(biāo)
grid on ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
% 添加網(wǎng)格
% 對濾波處理后的數(shù)據(jù)作FFT頻譜分析,并將結(jié)果在第二張子圖上作圖表示,加上橫縱坐標(biāo)和標(biāo)題 ?
[f,mag] = daqdocfft(data1,Fs,blocksize); ? ? ? ? ? ? ?% 此函數(shù)為MATLAB自帶 ?
%MIT IAP Radar Course 2011
%Resource: Build a Small Radar System Capable of Sensing Range, Doppler,
%and Synthetic Aperture Radar Imaging
%
%Gregory L. Charvat
%Process Doppler vs. Time Intensity (DTI) plot
%NOTE: set Vtune to 3.2V to stay within ISM band and change fc to frequency
%below
clear all;
close all;
%read the raw data .wave file here
[Y,FS] = audioread('Off of Newton Exit 17.wav');
%constants
c = 3E8; %(m/s) speed of light
%radar parameters
Tp= 0.250; %(s) pulse time
N = Tp*FS; %# of samples per pulse / Fs 是采樣率,N表示在一個脈沖時間采了多少個點
fc = 2544.2E6; %(Hz) ?Center frequency (connected VCO Vtune to +5 for example)
%fc = 2495E6; %(Hz) Center frequency within ISM band (VCO Vtune to +3.2V)
%the input appears to be inverted
s = -1*Y(:,2); % 矩陣Y的第二列都乘-1,得到的結(jié)果只有Y的第二列乘以-1,s是個列矩陣
%clear Y;
%figure;
%subplot(1,2,2)
%plot(Y(:,2));
%creat doppler vs. time plot data set here
%Temp1 = round(size(s,1)/N)-1; ? ? ? % 除以 N 計算需要多少個脈沖時間
for ii = 1:round(size(s,1)/N)-1 ? ? % size(s,1)返回s的行數(shù),round四舍五入,s的行數(shù)除以N之后,四舍五入再減1
? ?sif(ii,:) = s(1+(ii-1)*N:ii*N); % 將 s 中的 1+(ii-1)*N 到 ii*N 行第一個元素(s為列向量),放到 sif 的第ii行 ,一個脈沖時間的數(shù)據(jù)放一行
end
%subtract the average DC term here
sif = sif - mean(s);
zpad = 8*N/2;% ifft的計算長度
%doppler vs. time plot:
v = dbv(fft(sif,zpad,2));% 按行進(jìn)行ifft,列數(shù)變成了sif的4倍
%Temp2 = v;
v = v(:,1:size(v,2)/2); ? % size(v,2)返回 v 的列數(shù),v 的列數(shù)除以2, v 的1到 22050(size(v,2)/2)列,構(gòu)成新的 v
mmax = max(max(v)); ? ?% 取出 v 里面最大的元素,第一次行最大元素,第二次所有元素中最大的元素
%calculate velocity
subplot(1,2,1)
imagesc(velocity,time,v-mmax,[-35, 0]); ?%四個參數(shù)??
colorbar;
xlim([0 40]); %limit velocity axis
ylabel('time (sec)');
三、運行結(jié)果


?