Matlab for Method 2:
... as in Method 1 until ...
% Measured guitar body resonances
F = [4.64 96.52 189.33 219.95]; % Hz
B = [ 20 20 10 10 ]; % Hz
Rd= [ 0 5 40 40 ]; % Heights in dB
R = 10.^(Rd/20); nsec = length(F);
R = exp(-pi*B/fs); % Pole radii
theta = 2*pi*F/fs; % Pole angles
poles = R .* exp(j*theta); % Complex poles
A1 = -2*R.*cos(theta);
A2 = R.*R;
denoms = [ones(size(A1)); A1; A2]'
A = [1,zeros(1,2*nsec)];
for i=1:nsec,
% polynomial multiplication = FIR filtering
A = filter(denoms(i,:),1,A);
end;
% Construct a resonator as a sum of
% arbitrary modes with unit residues,
% adding a near-zero at DC.
B = zeros(1,2*nsec+1);
impulse = [1,zeros(1,2*nsec)];
for i=1:nsec,
% polynomial multiplication
B = B + filter(A,denoms(i,:),impulse);
end;
B = filter([1 -0.995],1,B); % near-zero at DC
% filter() does polynomial division here:
B = B + filter(A,denoms(i,:),impulse);
end;
% add a near-zero at DC
B = filter([1 -0.995],1,B);
... as in Method 1 for display ...