Generate Alternating Tones Based On Number Of Cycles

2 次查看(过去 30 天)
Hi, I need to generate a sine wave that alternates between 5 cycles of 651hz, and 4 cycles of 465hz, 100 times.
My current code works, but the frequency gets rounded to a frequency divisible by 48000.
Can I get any help?
  3 个评论
Elijah Hamilton
Elijah Hamilton 2022-11-2
The code generates a single cycle of a square wave, at a given frequency in hertz.
48000 is the sampling rate in hertz.
465hz would be "rouned" to 461.5384615384615hz.
function f = wave(n)
num = 48000 * (0.5 / n);
f(1:num) = 1;
f = [f, f.*-1];
end

请先登录,再进行评论。

回答(1 个)

Davide Masiello
Davide Masiello 2022-11-2
编辑:Davide Masiello 2022-11-2
I am still quite unsure if this is what you are asking, but I will give it a go.
[t,w] = wave(465);
plot(t,w)
function [t,f] = wave(freq)
t = linspace(0,1/freq,48000);
f(1:48000/2) = 1;
f(48000/2+1:48000) = -1;
end

类别

Help CenterFile Exchange 中查找有关 Audio I/O and Waveform Generation 的更多信息

标签

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by