From a96cdbb84ff7d3e00a52fabfa61f7694019cf7b8 Mon Sep 17 00:00:00 2001 From: Arthur Lu Date: Fri, 10 Dec 2021 14:02:34 -0800 Subject: [PATCH] move new generate functions to NotWorking --- src/NotWorking/generate_cosine.m | 25 +++++++++++++ src/NotWorking/generate_pulse.m | 33 +++++++++++++++++ src/NotWorking/generate_trapezoid.m | 55 +++++++++++++++++++++++++++++ 3 files changed, 113 insertions(+) create mode 100644 src/NotWorking/generate_cosine.m create mode 100644 src/NotWorking/generate_pulse.m create mode 100644 src/NotWorking/generate_trapezoid.m diff --git a/src/NotWorking/generate_cosine.m b/src/NotWorking/generate_cosine.m new file mode 100644 index 0000000..8a013ed --- /dev/null +++ b/src/NotWorking/generate_cosine.m @@ -0,0 +1,25 @@ +function x = generate_cosine(amplitude, frequency, phase, fs, duration, duty) +% GENERATE_WAVENAME: returns a matrix of sampled WAVENAME wave + +% CONTRIBUTORS: +% Mekhi Ellington: Original Creator + +% DOCUMENTATION: +% phase shift is in number of periods +% fs is the sampling frequency: how many sample points per second +% duration is time in seconds +% duty is a number between 0 and 1 + + % initialize local variables from input arguments + n = fs * duration; % number of samples (length of matrix) + dt = 1 / fs; % sampling period: time between two sample points + + % initialize a one dimensional zero matrix to be populated + x = zeros(1, n); + + % populate the matrix + for i = 1:n + t = i * dt; + x(i) = amplitude * cos(2*pi*frequency*t-phase); + end +end \ No newline at end of file diff --git a/src/NotWorking/generate_pulse.m b/src/NotWorking/generate_pulse.m new file mode 100644 index 0000000..2f9c316 --- /dev/null +++ b/src/NotWorking/generate_pulse.m @@ -0,0 +1,33 @@ +function x = generate_pulse(amplitude, frequency, phase, fs, duration, duty) +% GENERATE_puse: returns a matrix of sampled pulse wave + +% CONTRIBUTORS: +% Brian Tran: Created the wave + +% DOCUMENTATION: +% phase shift is in number of periods +% fs is the sampling frequency: how many sample points per second +% duration is time in seconds +% duty is a number between 0 and 1 + + % initialize local variables from input arguments + n = fs * duration; % number of samples (length of matrix) + dt = 1 / fs; % sampling period: time between two sample points + % initialize a one dimensional zero matrix to be populated + x = zeros(1, n); + f0=1e+6; % 1MHz + Fs=3e+6; + Tf=0.001; % 1 millisecond + t=0:1/Fs:Tf-1/Fs; + td=0.1; % duty cycle + A0=10; % 10 Volts + F=0; + N=1000; % Number of points + + % populate the matrix + for n = 1:N + F=F+(1/n)*cos(n*2*pi*f0*t).*sin(n*pi*td); + end + F=F*(2*A0/pi); + F=F+A0*td; +end \ No newline at end of file diff --git a/src/NotWorking/generate_trapezoid.m b/src/NotWorking/generate_trapezoid.m new file mode 100644 index 0000000..69ce591 --- /dev/null +++ b/src/NotWorking/generate_trapezoid.m @@ -0,0 +1,55 @@ +function x = generate_trapezoid(amplitude, frequency, phase, fs, duration, duty) +% GENERATE_TRAPEZOID: returns a matrix of sampled square wave + +% CONTRIBUTORS: +% Daniel Doan: Author + +% DOCUMENTATION: +% phase shift is in number of periods +% fs is the sampling frequency: how many sample points per second +% duration is time in seconds +% duty cycle should be a number between 0 and 1. + % duty of 0.5 would have 2 trapezoids in first half of each cycle + % example of wave with duty of 0.5, where the peaks are amplitude/2: + % + % ____ + % / \ + % / \ ________________ + % \ / + % \____/ + % + + + +% initialize local variables from input arguments + n = fs * duration; % number of samples (length of matrix) + dt = 1 / fs; % sampling period: time between two sample points + + % initialize a one dimensional zero matrix to be populated + x = zeros(1, n); + + % populate the matrix + for i = 1:n + t = i * dt; + + % periodic ramp from 0 to 1 + % progression through a cycle + st = mod(frequency * t - phase, 1); + slope = (amplitude/2) / (duty/8); + if(st < duty) + if(st < duty/8 || st > 7*duty/8) + x(i) = slope * st; + else + if(st < 5*duty/8) + x(i) = amplitude/2 - slope * (st-(3*duty/8)); + end + if(st < 3*duty/8) + x(i) = amplitude/2; + end + if(st > 5*duty/8) + x(i) = -amplitude/2; + end + end + end + end +end \ No newline at end of file