add wave genration functions
This commit is contained in:
parent
13c52f8c7a
commit
2ce7e6a7a4
15
src/generate_sine.m
Normal file
15
src/generate_sine.m
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
function x = generate_sine(amplitude, frequency, phase, fs, duration)
|
||||||
|
%GENERATE_SINE:Arthur Lu returns a matrix of sampled sine wave, where the
|
||||||
|
%phase shift is in number of periods
|
||||||
|
x = zeros(1, fs * duration);
|
||||||
|
A = amplitude;
|
||||||
|
f = frequency;
|
||||||
|
p = phase;
|
||||||
|
n = fs * duration;
|
||||||
|
dt = 1 / fs;
|
||||||
|
for i = 1:n
|
||||||
|
t = i * dt;
|
||||||
|
x(i) = A * sin(2 * pi * f * t - p);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
20
src/generate_square.m
Normal file
20
src/generate_square.m
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
function x = generate_square(amplitude, frequency, phase, fs, duration, duty)
|
||||||
|
%GENERATE_SINE:Arthur Lu returns a matrix of sampled sine wave, where the
|
||||||
|
%phase shift is in number of periods
|
||||||
|
x = zeros(1, fs * duration);
|
||||||
|
A = amplitude;
|
||||||
|
f = frequency;
|
||||||
|
p = phase;
|
||||||
|
n = fs * duration;
|
||||||
|
dt = 1 / fs;
|
||||||
|
for i = 1:n
|
||||||
|
t = i * dt;
|
||||||
|
st = mod(f * t - p, 1);
|
||||||
|
if(st < duty)
|
||||||
|
x(i) = A;
|
||||||
|
else
|
||||||
|
x(i) = -A;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
19
src/generate_triangle.m
Normal file
19
src/generate_triangle.m
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
function x = generate_triangle(amplitude, frequency, phase, fs, duration, duty)
|
||||||
|
%GENERATE_SINE:Arthur Lu returns a matrix of sampled sine wave, where the
|
||||||
|
%phase shift is in number of periods
|
||||||
|
x = zeros(1, fs * duration);
|
||||||
|
A = amplitude;
|
||||||
|
f = frequency;
|
||||||
|
p = phase;
|
||||||
|
n = fs * duration;
|
||||||
|
dt = 1 / fs;
|
||||||
|
for i = 1:n
|
||||||
|
t = i * dt;
|
||||||
|
st = mod(f * t - p, 1);
|
||||||
|
if(st < duty)
|
||||||
|
x(i) = A*(1/duty * st - 0.5);
|
||||||
|
else
|
||||||
|
x(i) = A*(-(1/(1-duty))*st + (duty/(1-duty)) + 1 - 0.5);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
5
src/play_wave.m
Normal file
5
src/play_wave.m
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
function play_wave(wave, fs)
|
||||||
|
%PLAY_WAVE:Arthur Lu plays a wave as sound
|
||||||
|
sound(wave, fs)
|
||||||
|
end
|
||||||
|
|
8
src/plot_wave.m
Normal file
8
src/plot_wave.m
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
function plot_wave(waveform, fs, duration)
|
||||||
|
%PLOT_WAVE:Arthur Lu plots a waveform
|
||||||
|
x = linspace(0, duration, fs * duration);
|
||||||
|
plot(x, waveform);
|
||||||
|
xlabel("time");
|
||||||
|
ylabel("amplitude");
|
||||||
|
end
|
||||||
|
|
Reference in New Issue
Block a user