Code covered by the BSD License  

Highlights from
What's New for Object-Oriented Programming in MATLAB Webinar - Code Examples

image thumbnail
from What's New for Object-Oriented Programming in MATLAB Webinar - Code Examples by Stuart McGarrity
Code examples used in "What's New for Object-Oriented Programming in MATLABĀ®" Webinar

angles=doa(obj)
function angles=doa(obj)
% DOA  Estimate the direction of arrival of the sources in the
% sensor array data set using simplistic peak finding method
% Example:
%  angels=doa(ds)

zeroPadTo=256;
[mags, fflip]=magfft(obj,zeroPadTo);
maxtab=peakdet(mags,.1);             % Use peakdet function
angles=sort(fflip(maxtab(:,1))*180); % Angles
end
function [maxtab, mintab]=peakdet(v, delta)
%PEAKDET Detect peaks in a vector
%        [MAXTAB, MINTAB] = PEAKDET(V, DELTA) finds the local
%        maxima and minima ("peaks") in the vector V.
%        A point is considered a maximum peak if it has the maximal
%        value, and was preceded (to the left) by a value lower by
%        DELTA. MAXTAB and MINTAB consists of two columns. Column 1
%        contains indices in V, and column 2 the found values.
% Eli Billauer, 3.4.05 (Explicitly not copyrighted).
% http://www.billauer.co.il/peakdet.html
% This function is released to the public domain; Any use is allowed.

maxtab = [];
mintab = [];

v = v(:); % Just in case this wasn't a proper vector

if (length(delta(:)))>1
    error('Input argument DELTA must be a scalar');
end

if delta <= 0
    error('Input argument DELTA must be positive');
end

mn = Inf; mx = -Inf;
mnpos = NaN; mxpos = NaN;

lookformax = 1;

for i=1:length(v)
    this = v(i);
    if this > mx, mx = this; mxpos = i; end
    if this < mn, mn = this; mnpos = i; end

    if lookformax
        if this < mx-delta
            maxtab = [maxtab ; mxpos mx];
            mn = this; mnpos = i;
            lookformax = 0;
        end
    else
        if this > mn+delta
            mintab = [mintab ; mnpos mn];
            mx = this; mxpos = i;
            lookformax = 1;
        end
    end
end
end

Contact us at files@mathworks.com