capsule_polar_response_all.m 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. %%
  2. %% *SpHEAR Project
  3. %%
  4. %% capsule_polar_response_all: calculate polar response of capsule for frequency ranges
  5. %%
  6. %% usage:
  7. %% [] = capsule_polar_response_all(m, fmin, fmax, Noct, Fs, Nsamp, Npre, plt)
  8. %%
  9. %% m: vector of measurement numbers to take into account
  10. %% fmin, fmax: lower and upper frequency limits
  11. %% Noct: width of frequency ranges in fractions of an octave, this
  12. %% will be changed slightly so that the frequency range is
  13. %% covered by equally spaced frequency bands
  14. %% Fs: sampling rate
  15. %% Nsamp: time domain samples to use
  16. %% Npre: samples to use before the main peak of impulse response
  17. %%
  18. %% Copyright 2016, Fernando Lopez-Lezcano, All Rights Reserved
  19. %% nando@ccrma.stanford.edu
  20. %%
  21. %% This program is free software: you can redistribute it and/or modify
  22. %% it under the terms of the GNU General Public License as published by
  23. %% the Free Software Foundation, either version 3 of the License, or
  24. %% (at your option) any later version.
  25. %%
  26. %% This program is distributed in the hope that it will be useful,
  27. %% but WITHOUT ANY WARRANTY; without even the implied warranty of
  28. %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  29. %% GNU General Public License for more details.
  30. %%
  31. %% You should have received a copy of the GNU General Public License
  32. %% along with this program. If not, see <http://www.gnu.org/licenses/>.
  33. function [] = capsule_polar_response_all(m, fmin, fmax, Noct, Fs, Nsamp, Npre, plt)
  34. %% calculate number of frequency bands spaced Noct
  35. n = floor(log(fmax/fmin)/log(2^(1/Noct)));
  36. %% adjust width of band so they fit exactly in frequency range
  37. N = log(2)/(log(fmax/fmin)/n);
  38. printf("%d frequency bands, %f bands per octave\n", n, N);
  39. %% first center frequency
  40. fcmin = fmin * 2^(1/(N * 2));
  41. %% all center and edge frequencies
  42. fc = fcmin * 2.^((0:n - 1)/N)';
  43. fe = fmin * 2.^((0:n)/N)';
  44. colors = 'brgkmc';
  45. f = figure;
  46. title(["EM182 capsule polar pattern"]);
  47. for i = (1:size(fc))
  48. R = capsule_polar_response(m, fe(i), fe(i + 1), Nsamp, Npre, 1.5);
  49. if plt
  50. capsule_plot(1, R, fe(i), fe(i + 1), 1.8, colors(mod(i - 1, size(colors)(2)) + 1));
  51. end
  52. end
  53. legend('location', 'west');
  54. print(f, '-depsc', 'figures/capsule_polar_response.eps');
  55. end