Skip to content
Snippets Groups Projects
analyser.m 1.01 KiB
clear
clc

Td = 6.05E-4;
fd = 1/Td;
wd = 2*pi*fd

% Time of first peak
t0 = 3.4E-3;

% Computation variables
n_max = 11;
tolerance = 3E-5;

data = readmatrix("data.csv");

figure(1)
plot(data(:, 1), data(:, 2))

% Visualize tolerance
xline(t0 - tolerance, 'g');
xline(t0 + tolerance, 'g');

% Average voltage at each peak
for n = 0:n_max-1
    t(n+1) = t0 + Td * n;
    v(n+1) = getVoltage(t(n+1), data, tolerance);
    xline(t(n+1));    
end

% Calculate an array of deltas
for n = 1:n_max-1
    d(n) = 1/n * log(v(n) / v(n+1));
end

% Find mean of deltas
delta = 0;
for n = 1:n_max-1
    delta = delta + d(n);
end
delta = delta / (n_max - 1)

% Calculate zeta
zeta = 1 / (sqrt(1 + (2*pi / delta)^2))

% Calculate Q factor
Q = 1 / (2 * zeta)

% Calculate natural fequency
wn = wd / sqrt(1 - zeta^2)

function v = getVoltage(t, A, tol)
    count = 0;
    sum = 0;
    for i = 1:length(A)
        if (abs(A(i, 1) - t) <= tol)
            sum = sum + A(i, 2);
            count = count + 1;
        end
    end
    v = sum / count;
end