12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- % IM = mkSine(SIZE, PERIOD, DIRECTION, AMPLITUDE, PHASE, ORIGIN)
- % or
- % IM = mkSine(SIZE, FREQ, AMPLITUDE, PHASE, ORIGIN)
- %
- % Compute a matrix of dimension SIZE (a [Y X] 2-vector, or a scalar)
- % containing samples of a 2D sinusoid, with given PERIOD (in pixels),
- % DIRECTION (radians, CW from X-axis, default = 0), AMPLITUDE (default
- % = 1), and PHASE (radians, relative to ORIGIN, default = 0). ORIGIN
- % defaults to the center of the image.
- %
- % In the second form, FREQ is a 2-vector of frequencies (radians/pixel).
- % Eero Simoncelli, 6/96.
- function [res] = mkSine(sz, per_freq, dir_amp, amp_phase, phase_orig, orig)
- %------------------------------------------------------------
- %% OPTIONAL ARGS:
- if (prod(size(per_freq)) == 2)
- frequency = norm(per_freq);
- direction = atan2(per_freq(1),per_freq(2));
- if (exist('dir_amp') == 1)
- amplitude = dir_amp;
- else
- amplitude = 1;
- end
- if (exist('amp_phase') == 1)
- phase = amp_phase;
- else
- phase = 0;
- end
- if (exist('phase_orig') == 1)
- origin = phase_orig;
- end
- if (exist('orig') == 1)
- error('Too many arguments for (second form) of mkSine');
- end
- else
- frequency = 2*pi/per_freq;
- if (exist('dir_amp') == 1)
- direction = dir_amp;
- else
- direction = 0;
- end
- if (exist('amp_phase') == 1)
- amplitude = amp_phase;
- else
- amplitude = 1;
- end
- if (exist('phase_orig') == 1)
- phase = phase_orig;
- else
- phase = 0;
- end
- if (exist('orig') == 1)
- origin = orig;
- end
- end
- %------------------------------------------------------------
-
- if (exist('origin') == 1)
- res = amplitude*sin(mkRamp(sz, direction, frequency, phase, origin));
- else
- res = amplitude*sin(mkRamp(sz, direction, frequency, phase));
- end
|