雷达通信基于多普勒连续波测速matlab源码
Posted Matlab走起
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了雷达通信基于多普勒连续波测速matlab源码相关的知识,希望对你有一定的参考价值。
一、简介
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)');
三、运行结果
四、备注
完整代码或者代写添加QQ1575304183
以上是关于雷达通信基于多普勒连续波测速matlab源码的主要内容,如果未能解决你的问题,请参考以下文章
运动学基于matlab脉冲多普勒测距测速含Matlab源码 1947期
雷达通信基于matlab GUI雷达脉冲压缩含Matlab源码 303期
雷达回波基于matlab天气观测极化雷达回波仿真含Matlab源码 2252期
滤波跟踪基于matlab无迹卡尔曼滤波惯性导航+DVL组合导航含Matlab源码 2019期