Как я могу генерировать синусоидальные волны с разными частотами, используя Matlab? - PullRequest
2 голосов
/ 08 февраля 2012

Для моего проекта мне нужно создать синусоидальную волну, используя matlab, который имеет 100 000 выборок, а частота меняется случайным образом после каждых 10 000 выборок.Частота дискретизации и частоты могут быть как для удобства.Есть ли какая-либо функция в Matlab для генерации этого?

Ответы [ 3 ]

5 голосов
/ 08 февраля 2012

ОК, другой пример: для генерации 5 случайных частот: -)

%range of possibles frequencies
FrequenciesRandon = [200:1:500];

%number of randon frequencies ??
nf = 5;

EndSignal=[];

for j = 1 : nf
    t  = [ 0 : 1 : 10000];           % Time Samples
    f=randsample(FrequenciesRandon,1); % get the randon frequencie
    Fs = 44100;                     % Sampling Frequency
    data = sin(2*pi*f/Fs*t)';        % Generate Sine Wave
    EndSignal= [data;EndSignal];    
end

wavplay(EndSignal,Fs) 
3 голосов
/ 08 февраля 2012

Здравствуйте, я не знаю ни одной готовой функции для этого в matlab, но сделать это в matlab довольно просто, простой пример того, как сгенерировать 10 000 семплов в 450 Гц

t  = [ 0 : 1 : 10000];           % Time Samples
f  = 450;                       % Input Signal Frequency
Fs = 44100;                     % Sampling Frequency
data = sin(2*pi*f/Fs*t)';        % Generate Sine Wave
wavplay(data,Fs)                 %to Listen
0 голосов
/ 14 ноября 2017

Вот пример для различных последовательных частот.

% Generate a sequencial sinusoid
fs = 8000;                                        % sampling rate
amp = 1;                                          % amplitude
freqs = [262, 294, 330, 350, 392, 440, 494, 523]; % frequency in Hz
T = 1/fs;                                         % sampling period
dur = 0.5;                                        % duration in seconds
phi = 0;                                          % phase in radian
y = [];

for k = 1:size(freqs,2)
    x = amp*sin(2*pi*freqs(k)*[0:T:dur-T]+phi);
    y = horzcat(y,x);
end
...