📄 enterdelays.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 + -