【发布时间】:2012-02-08 18:10:51
【问题描述】:
对于我的项目,我需要使用具有 100 000 个样本的 matlab 生成一个正弦波,并且频率在每 10 000 个样本后随机变化。采样率和频率可以根据需要而定。 matlab中是否有任何函数可以生成这个?
【问题讨论】:
对于我的项目,我需要使用具有 100 000 个样本的 matlab 生成一个正弦波,并且频率在每 10 000 个样本后随机变化。采样率和频率可以根据需要而定。 matlab中是否有任何函数可以生成这个?
【问题讨论】:
OK 另一个例子:生成 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)
【讨论】:
您好,我知道在 matlab 中没有现成的函数可以执行此操作,但是在 matlab 中执行此操作非常简单,一个简单的示例说明如何在 450Hz 下生成 10 000 个样本
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
【讨论】:
以下是不同顺序频率的示例。
% 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
【讨论】: