Daniel@0: function varargout = mirmode(x,varargin) Daniel@0: % m = mirmode(a) estimates the mode. A value of 0 indicates a complete Daniel@0: % incertainty, whereas a positive value indicates a dominance of Daniel@0: % major mode and a negative value indicates a dominance of minor mode. Daniel@0: % Optional arguments: Daniel@0: % mirmode(a,s) specifies a strategy. Daniel@0: % Possible values for s: 'Sum', 'Best'(default) Daniel@0: Daniel@0: stra.type = 'String'; Daniel@0: stra.default = 'Best'; Daniel@0: stra.choice = {'Best','Sum'}; Daniel@0: option.stra = stra; Daniel@0: Daniel@0: specif.option = option; Daniel@0: specif.defaultframelength = 1; Daniel@0: specif.defaultframehop = .5; Daniel@0: Daniel@0: varargout = mirfunction(@mirmode,x,varargin,nargout,specif,@init,@main); Daniel@0: Daniel@0: Daniel@0: function [x type] = init(x,option) Daniel@0: if not(isamir(x,'mirkeystrength')) Daniel@0: x = mirkeystrength(x); Daniel@0: end Daniel@0: type = 'mirscalar'; Daniel@0: Daniel@0: Daniel@0: function o = main(s,option,postoption) Daniel@0: if iscell(s) Daniel@0: s = s{1}; Daniel@0: end Daniel@0: m = get(s,'Data'); Daniel@0: if strcmpi(option.stra,'sum') Daniel@0: v = mircompute(@algosum,m); Daniel@0: elseif strcmpi(option.stra,'best') Daniel@0: v = mircompute(@algobest,m); Daniel@0: end Daniel@0: b = mirscalar(s,'Data',v,'Title','Mode'); Daniel@0: o = {b,s}; Daniel@0: Daniel@0: Daniel@0: function v = algosum(m) Daniel@0: v = sum(abs(m(:,:,:,1))) - sum(abs(m(:,:,:,2))); Daniel@0: Daniel@0: Daniel@0: function v = algobest(m) Daniel@0: v = max(m(:,:,:,1)) - max(m(:,:,:,2));