1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- function r = circ_r(alpha, w, d, dim)
- % r = circ_r(alpha, w, d)
- % Computes mean resultant vector length for circular data.
- %
- % Input:
- % alpha sample of angles in radians
- % [w number of incidences in case of binned angle data]
- % [d spacing of bin centers for binned data, if supplied
- % correction factor is used to correct for bias in
- % estimation of r, in radians (!)]
- % [dim compute along this dimension, default is 1]
- %
- % If dim argument is specified, all other optional arguments can be
- % left empty: circ_r(alpha, [], [], dim)
- %
- % Output:
- % r mean resultant length
- %
- % PHB 7/6/2008
- %
- % References:
- % Statistical analysis of circular data, N.I. Fisher
- % Topics in circular statistics, S.R. Jammalamadaka et al.
- % Biostatistical Analysis, J. H. Zar
- %
- % Circular Statistics Toolbox for Matlab
- % By Philipp Berens, 2009
- % berens@tuebingen.mpg.de - www.kyb.mpg.de/~berens/circStat.html
- if nargin < 4
- dim = 1;
- end
- if nargin < 2 || isempty(w)
- % if no specific weighting has been specified
- % assume no binning has taken place
- w = ones(size(alpha));
- else
- if size(w,2) ~= size(alpha,2) || size(w,1) ~= size(alpha,1)
- error('Input dimensions do not match');
- end
- end
- if nargin < 3 || isempty(d)
- % per default do not apply correct for binned data
- d = 0;
- end
- % compute weighted sum of cos and sin of angles
- r = sum(w.*exp(1i*alpha),dim);
- % obtain length
- r = abs(r)./sum(w,dim);
- % for data with known spacing, apply correction factor to correct for bias
- % in the estimation of r (see Zar, p. 601, equ. 26.16)
- if d ~= 0
- c = d/2/sin(d/2);
- r = c*r;
- end
|