矩形波 / Squarewave

function out = synth_squarewave(freq, ms, fs)
%SYNTH_SQUAREWAVE   Square wave generator.
%   synth_squarewave(freq, ms, fs) generates a square wave of
%   specified pitch and duration with unity amplitude.
%
%   freq - frequency of the tone in Hertz`
%     ms - duration in milli-second
%     fs - sampling frequency in Hertz
%
%   2004-01-10 by MARUI Atsushi
%   2004-10-30 added direct method

method = 'build-up';
%method = 'direct';

switch lower(method)
  case {'build-up'}
    out = zeros(ceil(fs*ms/1000), 1);
    R = floor(fs/2 / freq); %number of sinewaves in a squarewave    
    c = 2 * pi * (freq / fs);
    i = [1:size(out, 1)];
    for k=1:2:R
      out(i) = out(i) + (sin(c * (i-1) * k)/k)';
    end
  case {'direct'}
    t = 0:1/fs:ms/1000;
    out = square(2*pi*freq*t);
end
out = normalize(out);



MARUI Atsushi
2017-02-22