Generate Alternating Tones Based On Number Of Cycles

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 Comments

"My current code works, but the frequency gets rounded to a frequency divisible by 48000."
Not sure what you mean here.
Could you please share your code and clarify the above statement?
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
So you want to generate a square wave.

Sign in to comment.

Answers (1)

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

Categories

Find more on Simulation, Tuning, and Visualization in Help Center and File Exchange

Products

Tags

Asked:

on 2 Nov 2022

Edited:

on 2 Nov 2022

Community Treasure Hunt

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

Start Hunting!