⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 doppler.m

📁 可以产生测距的超声多普勒信号
💻 M
字号:
function [fm,am,iflaw]=doppler(N,Fs,f0,d,v,t0,c);%DOPPLER Generate complex Doppler signal.% 	 [FM,AM,IFLAW]=DOPPLER(N,FS,F0,D,V,T0,C) %	 Returns the frequency modulation (FM), the amplitude %	 modulation (AM) and the instantaneous frequency law (IFLAW) %	 of the signal received by a fixed observer from a moving target %	 emitting a pure frequency f0.%%	 N  : number of points.  %	 FS : sampling frequency (in Hertz).  %	 F0 : target   frequency (in Hertz).  %	 D  : distance from the line to the observer (in meters).  %	 V  : target velocity    (in m/s)%	 T0 : time center                  (default : N/2).  %	 C  : wave velocity      (in m/s)  (default : 340). %	 FM : Output frequency modulation.  %	 AM : Output amplitude modulation.  %	 IFLAW : Output instantaneous frequency law.% %	Example: %	 N=512; [fm,am,iflaw]=doppler(N,200,65,10,50); %	 subplot(211); plot(real(am.*fm)); %	 subplot(212); plot(iflaw);%        [ifhat,t]=instfreq(sigmerge(am.*fm,noisecg(N),15),11:502,10);%        hold on; plot(t,ifhat,'g'); hold off;%%	See also DOPNOISE %	F. Auger, July 94, August 95 - O. Lemoine, October 95.%	Copyright (c) 1996 by CNRS (France).%%	------------------- CONFIDENTIAL PROGRAM -------------------- %	This program can not be used without the authorization of its%	author(s). For any comment or bug report, please send e-mail to %	f.auger@ieee.org if (nargin <= 4), error ( 'At least 5 parameters are required' ); elseif (nargin == 5), t0=N/2; c=340.0;elseif (nargin == 6), c=340.0;end;if (N <= 0), error ('The signal length N must be strictly positive' );elseif (d <= 0.0), error ('The distance D must be positive' );elseif (Fs < 0.0), error ('The sampling frequency FS must be positive' );elseif (t0<1) | (t0>N), error ('T0 must be between 1 and N');elseif (f0<0)|(f0>Fs/2), error ('F0 must be between 0 and FS/2');elseif (v<0), error ('V must be positive');else tmt0=((1:N)'-t0)/Fs; dist=sqrt(d^2+(v*tmt0).^2); fm = exp(j*2.0*pi*f0*(tmt0-dist/c)); if (nargout>=2),   if abs(f0)<eps,   am=0;  else   am= 1.0 ./ sqrt(dist);   end end; if (nargout==3), iflaw=(1-v^2*tmt0./dist/c)*f0/Fs; end;end ;				   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -