1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41function [phi, psi] = ccafbounds(mpos, fs, soundc, prop, order)
42
43
44narginchk(5, 5);
45if ~isreal(mpos) || ~all(all(isfinite(mpos))) || size(mpos,1) ~= 3
46 error('mpos must be a real matrix with 3 rows')
47elseif ~isscalar(fs) || ~isreal(fs) || ~isfinite(fs) || ...
48 fs < 0 || abs(mod(fs, floor(fs))) > 0
49 error('fs must be a positive integer')
50elseif ~isreal(soundc) || ~isscalar(soundc) || ~isfinite(soundc) || soundc <= 0
51 error('soundc must be positive real scalar');
52elseif ~isscalar(prop) || ~isreal(prop) || ~isfinite(prop) || ...
53 prop < 0 || abs(mod(prop, floor(prop))) > 0
54 error('prop must be a positive integer')
55elseif ~isscalar(order) || ~isreal(order) || ~isfinite(order) || ...
56 order < 0 || abs(mod(order, floor(order))) > 0
57 error('order must be a positive integer')
58end
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73M = size(mpos,2);
74phi = zeros(order, M);
75
76for mIter = 1:M
77 sinDt = .05;
78 arrayCentroid = mean(mpos,2);
79 bm = sqrt(sum((mpos(:,mIter)-arrayCentroid).^2));
80
81 Tm = bm*fs*sinDt/soundc;
82 for nIter = 1:order
83 phi(nIter, mIter) = 1/(pi*max([.1, (nIter-prop)-Tm, -(nIter-prop)-Tm]));
84
85 end
86end
87psi = -phi;
88
89end