【雷达通信】基于matlab多普勒连续波测速【含Matlab源码 642期】
一、获取代码方式
获取代码方式1:
完整代码已上传我的资源: 【雷达通信】基于matlab多普勒连续波测速【含Matlab源码 642期】
获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。
备注:订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);
二、多普勒简介
1 多普勒效应
多普勒效应在我们日常生活中有很多,比如当一辆救护车迎面驶来的时候,听到声音比原来高;而车离去的时候声音的音高比原来低。
这个效应是为纪念奥地利物理学家及数学家克里斯琴·约翰·多普勒(Christian Johann Doppler)而命名的,他于1842年首先提出了这一理论。据说是因为有一次一列火车从他身旁经过,他发现火车从远而近时汽笛声变响,音调变尖,而火车从近而远时汽笛声变弱,音调变低。他觉得很有意思,于是他就对这个现象去深入研究,从而提出了多普勒效应。
多普勒效应的主要内容为物体辐射的波长因为波源和观测者的相对运动而产生变化。在运动的波源前面,波被压缩,波长变得较短,频率变得较高(蓝移 blue shift);在运动的波源后面时,会产生相反的效应。波长变得较长,频率变得较低(红移 red shift);波源的速度越高,所产生的效应越大。根据波红(蓝)移的程度,可以计算出波源循着观测方向运动的速度。
2 卫星导航中的多普勒效应
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)
% 设置采样速率为8000Hz
ActualRate = get(AI,'SampleRate');
% 从AI中获取实际采样速率
set(AI,'TriggerChannel',chan)
% 设置触发通道
set(AI,'TriggerType','software');
% 设置触发类型
set(AI,'Triggercondition','rising');
% 设置为电压上升至某值后触发
set(AI,'TriggerConditionValue',0.013);
% 设置触发电压值
set(AI, 'TriggerDelay', -1);
% 设置触发时延
set(AI, 'TriggerDelayUnits', 'seconds');
% 设置触发时延的单位
set(AI,'timeout',2)
% 定义超时值
Fs = ActualRate;
% 设置采样速率
clear data1;
start(AI)
% 开始采样
try
[data1,time]=getdata(AI);
% 将采样得到的数据保存到data1,采样时间保存到time
catch time=0;data1=0;
disp('A timeout occurred.');
end
subplot(2,1,1)
% 绘制2行1列的第1张子图
plot(time,data1)
% 以时间为横轴,数据为纵轴作图
xlabel('Time (sec.)')
% 标注横坐标
ylabel('Signal Level (Volts)')
% 标注纵坐标
grid on
% 添加网格
% 对滤波处理后的数据作FFT频谱分析,并将结果在第二张子图上作图表示,加上横纵坐标和标题
[f,mag] = daqdocfft(data1,Fs,blocksize); % 此函数为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,得到的结果只有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的行数,round四舍五入,s的行数除以N之后,四舍五入再减1
sif(ii,:) = s(1+(ii-1)*N:ii*N); % 将 s 中的 1+(ii-1)*N 到 ii*N 行第一个元素(s为列向量),放到 sif 的第ii行 ,一个脉冲时间的数据放一行
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));% 按行进行ifft,列数变成了sif的4倍
%Temp2 = v;
v = v(:,1:size(v,2)/2); % size(v,2)返回 v 的列数,v 的列数除以2, v 的1到 22050(size(v,2)/2)列,构成新的 v
mmax = max(max(v)); % 取出 v 里面最大的元素,第一次行最大元素,第二次所有元素中最大的元素
%calculate velocity
subplot(1,2,1)
imagesc(velocity,time,v-mmax,[-35, 0]); %四个参数??
colorbar;
xlim([0 40]); %limit velocity axis
ylabel('time (sec)');
四、运行结果
五、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 沈再阳.精通MATLAB信号处理[M].清华大学出版社,2015.
[2]高宝建,彭进业,王琳,潘建寿.信号与系统——使用MATLAB分析与实现[M].清华大学出版社,2020.
[3]王文光,魏少明,任欣.信号处理与系统分析的MATLAB实现[M].电子工业出版社,2018.
[4]李树锋.基于完全互补序列的MIMO雷达与5G MIMO通信[M].清华大学出版社.2021
[5]何友,关键.雷达目标检测与恒虚警处理(第二版)[M].清华大学出版社.2011
文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。
原文链接:qq912100926.blog.csdn.net/article/details/115292689
- 点赞
- 收藏
- 关注作者
评论(0)