tensileTest.m
function tensileTest()
% reads data from a tensile test
% plots stress–strain curves and computes Young modulus
[L, d, DLMat, FMat] = readTensileData("tensileTest.dat");
epsMat = DLMat/L*100; % in %
S0 = pi*d^2/4; % in mm^2
sigMat = 1000*FMat/S0; % in N/mm^2 = MPa
plot(epsMat, sigMat)
xlabel("\epsilon [%]", "Fontsize", 14)
ylabel("\sigma [MPa]", "Fontsize", 14)
title("Stress–strain curves", "Fontsize", 14)
F = getframe(gcf());
imwrite(F.cdata, "bild14.png");
% get linear data
epsMax = 0.25;
idxMax = find(epsMat(:,1) <= epsMax, 1, "last");
epsLin = epsMat(1:idxMax, 1);
sigLin = sigMat(1:idxMax, :);
plot(epsLin, sigLin, "*")
xlabel("\epsilon [%]", "Fontsize", 14)
ylabel("\sigma [MPa]", "Fontsize", 14)
title("Stress–strain curves, linear part", "Fontsize", 14)
F = getframe(gcf());
imwrite(F.cdata, "bild22.png");
% get mean values and standard deviations
sigMean = mean(sigLin', "omitnan")';
sigDevs = std(sigLin', "omitnan")';
errorbar(epsLin, sigMean, sigDevs/2, ".")
xlabel("\epsilon [%]", "Fontsize", 14)
ylabel("\sigma [MPa]", "Fontsize", 14)
title("Stress–strain curves, mean values", "Fontsize", 14)
F = getframe(gcf());
imwrite(F.cdata, "bild23.png");
% linear fit without using std's
poly1 = polyfit(epsLin, sigMean, 1)
E = poly1(1)/10; % in GPa
fprintf("Young modulus without using standard deviations: %7.2f GPa\n", E)
epsMax = epsLin(end);
epsP = 0:epsMax/100:epsMax;
sigP = polyval(poly1, epsP);
plot(epsLin, sigMean, "r*", epsP, sigP, "k-")
xlabel("\epsilon [%]", "Fontsize", 14)
ylabel("\sigma [MPa]", "Fontsize", 14)
title("Stress–strain curves, linear fit", "Fontsize", 14)
F = getframe(gcf());
imwrite(F.cdata, "bild24.png");