Generate Alternating Tones Based On Number Of Cycles

2 vues (au cours des 30 derniers jours)
Elijah Hamilton
Elijah Hamilton le 2 Nov 2022
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 commentaires
Elijah Hamilton
Elijah Hamilton le 2 Nov 2022
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
Davide Masiello
Davide Masiello le 2 Nov 2022
So you want to generate a square wave.

Connectez-vous pour commenter.

Réponses (1)

Davide Masiello
Davide Masiello le 2 Nov 2022
Modifié(e) : Davide Masiello le 2 Nov 2022
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

Catégories

En savoir plus sur Audio I/O and Waveform Generation dans Help Center et File Exchange

Tags

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by