If not, what is the most efficient way of implementing a 48 point FFT?
Three 16 point FFTs plus one set of 3 point "Butterflies".
Matlab example
%% Do a 48 point FFT, this is NOT efficient but shows the principle
n = 48;
nFFT = 16;
x0 = randn(n,1); % test vector
fx0 = fft(x0); % reference
x1 = reshape(x0,3,nFFT)'; % reshape into 3 N-16 vectors
fx1 = fft(x1); % 3 FFTs 16 points each
fx2 = [fx1; fx1; fx1]; % periodic repetition for easy butterfly code
W = exp(-1i*2*pi*(0:n-1)'/n); % twiddle factor, N = 48
% execute a 3 point "butterfly"
fy = fx2(:,1) + fx2(:,2).*W + fx2(:,3).*W.^2;
% calculate and print error
d = (fy-fx0);
fprintf('Relative Error = %6.2fdB \n',20*log10(sum(abs(d))./sum(abs(fx0))));