view dsp/smooth_with.m @ 61:eff6bddf82e3 tip

Finally implemented perceptual brightness thing.
author samer
date Sun, 11 Oct 2015 10:20:42 +0100
parents c3b0cd708782
children
line wrap: on
line source
function Z=smooth_with(h,i,Y)
% smooth_with - Smooth a signal by convolution without changing length
%
% smooth_with :: [[M]], 1..M, [[N]] -> [[N]].

m=length(h);
h=stoch(h(:))';
csh=cumsum(h);
rsh=fliplr(cumsum(fliplr(h)));

if isvector(Y), Z=sm(Y);
else Z=maprows(@sm,Y); 
end

function z=sm(y)
	z=conv(h,y); % complete convolution
	z=z(i:end-(m-i)); % trim the ends

	% rescale end bits
	z(1:m-i)=z(1:m-i)./csh(i:end-1);
	z(end-i+2:end)=z(end-i+2:end)./rsh(2:i);
end

end