from Frequency measure by Lorenzo Luengo
Helps measuring the exact frequency of a signal within a range.

findfreq(t,u,fmin,fmax,varargin)
function f = findfreq(t,u,fmin,fmax,varargin)
if nargin>4
	if strcmpi(varargin{1},'fpoints')
		frecs = linspace(fmin,fmax,varargin{2})*2*pi; % valores de frecuencia a probar
	elseif strcmpi(varargin{1},'fstep')
		frecs = [fmin:varargin{2}:fmax]*2*pi; % valores de frecuencia a probar
	end
else
	frecs = [fmin:fmax]*2*pi; % valores de frecuencia a probar
end
m = zeros(size(frecs,1),2);
for j = 1:length(frecs)
	m(j,1) = sum((u.*sin(frecs(j)*t)).^2);
	m(j,2) = sum((u.*cos(frecs(j)*t)).^2);
end
[a,b] = max(sum(m.^2,2),[],1);
f = frecs(b)/(2*pi); % chachaaaannn!!!
plot(frecs,m)

Contact us at files@mathworks.com