mkZonePlate.m 633 B

123456789101112131415161718192021222324252627282930313233
  1. % IM = mkZonePlate(SIZE, AMPL, PHASE)
  2. %
  3. % Make a "zone plate" image:
  4. % AMPL * cos( r^2 + PHASE)
  5. % SIZE specifies the matrix size, as for zeros().
  6. % AMPL (default = 1) and PHASE (default = 0) are optional.
  7. % Eero Simoncelli, 6/96.
  8. function [res] = mkZonePlate(sz, ampl, ph)
  9. sz = sz(:);
  10. if (size(sz,1) == 1)
  11. sz = [sz,sz];
  12. end
  13. mxsz = max(sz(1),sz(2));
  14. %------------------------------------------------------------
  15. %% OPTIONAL ARGS:
  16. if (exist('ampl') ~= 1)
  17. ampl = 1;
  18. end
  19. if (exist('ph') ~= 1)
  20. ph = 0;
  21. end
  22. %------------------------------------------------------------
  23. res = ampl * cos( (pi/mxsz) * mkR(sz,2) + ph );