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

📄 enterdelays.m

📁 基于声源的方向定位程序
💻 M
字号:
function [m1,m2,d,useful] = enterDelays(arr, c, tolerance, limits)%enterDelays	Enter a set of inter-phone delays for use in localization.%% [m1,m2,d,useful] = enterDelays(arr, c, tolerance, limits)%    Have the user enter a set of inter-phone delays.  As each is entered,%    display its hyperbola.  The values can be either seconds or milliseconds;%    the program guesses about which it might be, and gives the user a chance%    to correct the guess.%%% Required input arguments:%    arr	[2xN]     x- and y-positions, m%    c		[scalar]  speed of sound, m/s (~343 in air, ~1500 in seawater)% Optional input arguments:%    tolerance	[scalar]  error in time delays, s%    limits	[1x4]     axes limits of plot, m [xMin xMax yMin yMax]%% Values entered when this function executes:%    - number of inter-phone delays%    - for each inter-phone delay: which two phones are involved, and %      the delay value%% Outputs:%    m1		[1xM]  first phone number of each pair%    m2		[1xM]  second phone number of each pair%    d		[1xM]  arrival-time delay between phone 1 and phone 2, seconds;%		       d > 0 if the sound reached phone 1 first, < 0 if phone 2%                      first (this is the negative of Canary's correlation %                      offset value)%    useful	[1xM]  whether each phone pair value is less than max possible %                      delayglobal previousM1 previousM2 previousD scale scaleTextif (nargin < 3), tolerance = []; endif (nargin < 4), limits    = []; endcheckScale('init')plotPhones(arr, limits);	% turns hold onif (~exist('previousM1')), previousM1 = []; endif (isempty(previousM1))  n = input('Number of inter-phone delays? ');else  n = input('Number of inter-phone delays? [enter NaN to use previous set] ');endif (isnan(n))  % Use previous values.  m1 = previousM1;  m2 = previousM2;  d  = previousD;else  % Get new values from user.  d    = zeros(1,n);  m1   = zeros(1,n);  m2   = zeros(1,n);  maxD = zeros(1,n);    for i = 1:n    m1(i) = input('Between phone # ');    m2(i) = input('    and phone # ');    maxDelay = norm(arr(:,m1(i)) - arr(:,m2(i))) / c;    d(i) = -input(sprintf('    max delay is %g, actual delay%s is? ', ...	maxDelay * scale, scaleText));    checkScale(d(i));    if (~isempty(tolerance)), t = tolerance;     else t = defaultTolerance(d);    end    PlotHyperbolas(d(i) / scale, t, arr, m1(i), m2(i), c, limits);  end    d = d / scale;  previousM1 = m1;  previousM2 = m2;  previousD = d;end  hold offclfuseful = PlotHyperbolas(d, tolerance, arr, m1, m2, c, limits);

⌨️ 快捷键说明

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