-
Jack Philpott authoredJack Philpott authored
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