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