| function x = multitone( fs, f, amp, tlength ) |
| |
| %% |
| % Create single or multiple sine wave(s) |
| % |
| % x = multitone(fs, f, a, t); |
| % |
| % fs - Sample rate |
| % f - Frequency (Hz) |
| % a - Amplitude (lin) |
| % t - Lenght in seconds |
| % |
| % Example: |
| % x = multitone(48000, [997 1997], 10.^([-26 -46]/20), 1.0); |
| % |
| |
| %% |
| % Copyright (c) 2017, Intel Corporation |
| % All rights reserved. |
| % |
| % Redistribution and use in source and binary forms, with or without |
| % modification, are permitted provided that the following conditions are met: |
| % * Redistributions of source code must retain the above copyright |
| % notice, this list of conditions and the following disclaimer. |
| % * Redistributions in binary form must reproduce the above copyright |
| % notice, this list of conditions and the following disclaimer in the |
| % documentation and/or other materials provided with the distribution. |
| % * Neither the name of the Intel Corporation nor the |
| % names of its contributors may be used to endorse or promote products |
| % derived from this software without specific prior written permission. |
| % |
| % THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
| % AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| % IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
| % ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
| % LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
| % CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
| % SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
| % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
| % CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
| % ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
| % POSSIBILITY OF SUCH DAMAGE. |
| % |
| % Author: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com> |
| % |
| |
| n = round(fs*tlength); |
| t = (0:n-1)/fs; |
| nf = length(f); |
| if nf > 1 |
| ph = rand(nf, 1)*2*pi; |
| else |
| ph = 0; |
| end |
| |
| x = amp(1)*sin(2*pi*f(1)*t'); |
| for i=2:length(f) |
| x = x + amp(i)*sin(2*pi*f(i)*t+ph(i)); |
| end |
| |
| end |