CPR 2 (Met for-loops)
clear;
load('sprong_CPR2.mat');
load('output_cpr2.mat');
% Opdracht 1
% Berekening segmentlengtes
n = 5;
for i = 1:n
l_seg(i) = sqrt(((rx(1,i+1) - rx(1,i))^2) + ((ry(1,i+1) - ry(1,i))^2));
end
% Krachtenvergelijking voet
% Ftot = Fg + Ftib_voet + G = m_voet * a_voet
% Momentvergelijking voet
% Mtot = M_Fg + M_Ftib_voet + Mnetto_tib_voet = Jc_voet * alpha_voet
% Berekening segment massa's
m_seg = ppmass.*[0.01*2,0.07*2,0.13*2,0.06,0.52];
% Berekening plaats, snelheid en versnelling massamiddelpunten segmenten
rc_tov_Lseg = 1 - [0.50,0.43,0.43,0.56,0.55]; % Waardes uit
antropometrietabel, moet 1 - ..., want vanaf craniaal
for i = 1:n
e_rx_seg(:,i) = rx(:,i+1) - rx(:,i); % Eenheidsvector segment x-
richting
e_ry_seg(:,i) = ry(:,i+1) - ry(:,i);; % Eenheidsvector segment y-
richting
rc_segx(:,i) = rc_tov_Lseg(i).*e_rx_seg(:,i) + rx(:,i); % vector
segment*rc/Lseg + startpositie
rc_segy(:,i) = rc_tov_Lseg(i).*e_ry_seg(:,i) + ry(:,i);
vc_segx(:,i) = NumericalDerivative(t,rc_segx(:,i));
vc_segy(:,i) = NumericalDerivative(t,rc_segy(:,i));
ac_segx(:,i) = NumericalDerivative(t,vc_segx(:,i));
ac_segy(:,i) = NumericalDerivative(t,vc_segy(:,i));
end
% Berekening zwaartekracht
g = - 9.81;
G = m_seg.*g;
% Berekening kracht van tibia op voet
% Ftot = Fg + Ftib_voet + G = m_voet * a_voet
Ftib_voet = [(m_seg(1).*ac_segx(:,1) - Fg(:,1)),(m_seg(1).*ac_segy(:,1) -
G(1) - Fg(:,2))];
% Berekening traagheidsmoment segmenten
rgyr = [0.475,0.302,0.323,1.731,0.504].*l_seg;
Jc_seg = m_seg.*(rgyr.^2);
% Berekening hoek, hoeksnelheid en hoekversnelling segmenten
for i = 1:n
hoek_seg(:,i) = getSegmentOrientatie(e_rx_seg(:,i),e_ry_seg(:,i));
omega_seg(:,i) = NumericalDerivative(t,hoek_seg(:,i));
alpha_seg(:,i) = NumericalDerivative(t,omega_seg(:,i));
end
% Berekening M_Fg en M_Ftib_voet
% Draaipunt D = massamiddelpunt c
% Aangrijpingspunt A van Fg is COP
% Aangrijpingspunt A van Ftib_voet is enkel = [rx(:,2),ry(:,2)]
rAtovD_Fg = [COP(:,1) - rc_segx(:,1), COP(:,2) - rc_segy(:,1)];
,M_Fg = cross2d(rAtovD_Fg,Fg);
rAtovD_Ftib_voet = [rx(:,2) - rc_segx(:,1), ry(:,2) - rc_segy(:,1)];
M_Ftib_voet = cross2d(rAtovD_Ftib_voet,Ftib_voet);
% Berekening Mnetto_tib_voet
% Mtot = M_Fg + M_Ftib_voet + Mnetto_tib_voet = Jc_voet * alpha_voet
Mnetto_tib_voet = Jc_seg(1).*alpha_seg(:,1) - M_Fg - M_Ftib_voet;
% Berekening Ffem_tib
% Ftot = Fvoet_tib + G + Ffem_tib = m * a
% Fvoet_tib = - Ftib_voet
Ffem_tib = [(m_seg(2).*ac_segx(:,2)) + Ftib_voet(:,1),
(m_seg(2).*ac_segy(:,2)) + Ftib_voet(:,2) - G(2)];
% Berekening M_Ffem_tib en M_Fvoet_tib
% Draaipunt D = massamiddelpunt c
% Aangrijpingspunt A van Ffem_tib = [rx(:,3), ry(:,3)]
% Aangrijpingspunt A van Fvoet_tib = [rx(:,2), ry(:,2)]
rAtovD_Ffem_tib = [rx(:,3) - rc_segx(:,2),ry(:,3) - rc_segy(:,2)];
M_Ffem_tib = cross2d(rAtovD_Ffem_tib,Ffem_tib);
rAtovD_Fvoet_tib = [rx(:,2) - rc_segx(:,2),ry(:,2) - rc_segy(:,2)];
Fvoet_tib = - Ftib_voet; % Actie = - reactie
M_Fvoet_tib = cross2d(rAtovD_Fvoet_tib,Fvoet_tib);
% Berekening Mnetto_fem_tib
% Mtot = M_Fvoet_tib + M_Ffem_tib + Mnetto_fem_tib + Mnetto_voet_tib = Jc *
alpha
% Mnetto_voet_tib = - Mnetto_tib_voet
Mnetto_fem_tib = Jc_seg(2).*alpha_seg(:,2) - M_Fvoet_tib - M_Ffem_tib +
Mnetto_tib_voet;
% Opdracht 2
figure(1)
subplot(2,1,1)
plot(t,Mnetto_tib_voet)
title('Moment van tibia op voet')
subplot(2,1,2)
plot(t,Mnetto_fem_tib)
title('Moment van femur op tibia')
Er is sprake van een
dorsaalflexie in de
enkel, want het
moment is negatief en
bij een negatief
moment hoort een
beweging met de klok
mee.
, Er is sprake van een flexie in de knie, want het moment is positief en bij een positief moment
hoort een beweging tegen de klok in.
Negatief moment in de enkel Positief moment in de knie
CPR 3
clear;
load('sprong_CPR3.mat');
load('output_cpr3.mat');
% DATA BEREKEND IN CPR 2
% Opdracht 1
% Berekening segmentlengtes
n = 5;
for i = 1:n
l_seg(i) = sqrt(((rx(1,i+1) - rx(1,i))^2) + ((ry(1,i+1) - ry(1,i))^2));
end
% Krachtenvergelijking voet
% Ftot = Fg + Ftib_voet + G = m_voet * a_voet
% Momentvergelijking voet
% Mtot = M_Fg + M_Ftib_voet + Mnetto_tib_voet = Jc_voet * alpha_voet
% Berekening segment massa's
m_seg = ppmass.*[0.01*2,0.07*2,0.13*2,0.06,0.52];
% Berekening plaats, snelheid en versnelling massamiddelpunten segmenten
rc_tov_Lseg = 1 - [0.50,0.43,0.43,0.56,0.55]; % Waardes uit
antropometrietabel, moet 1 - ..., want vanaf craniaal
for i = 1:n
e_rx_seg(:,i) = rx(:,i+1) - rx(:,i); % Eenheidsvector segment x-
richting
e_ry_seg(:,i) = ry(:,i+1) - ry(:,i);; % Eenheidsvector segment y-
richting
rc_segx(:,i) = rc_tov_Lseg(i).*e_rx_seg(:,i) + rx(:,i); % vector
segment*rc/Lseg + startpositie
rc_segy(:,i) = rc_tov_Lseg(i).*e_ry_seg(:,i) + ry(:,i);
vc_segx(:,i) = NumericalDerivative(t,rc_segx(:,i));
vc_segy(:,i) = NumericalDerivative(t,rc_segy(:,i));
ac_segx(:,i) = NumericalDerivative(t,vc_segx(:,i));
ac_segy(:,i) = NumericalDerivative(t,vc_segy(:,i));
clear;
load('sprong_CPR2.mat');
load('output_cpr2.mat');
% Opdracht 1
% Berekening segmentlengtes
n = 5;
for i = 1:n
l_seg(i) = sqrt(((rx(1,i+1) - rx(1,i))^2) + ((ry(1,i+1) - ry(1,i))^2));
end
% Krachtenvergelijking voet
% Ftot = Fg + Ftib_voet + G = m_voet * a_voet
% Momentvergelijking voet
% Mtot = M_Fg + M_Ftib_voet + Mnetto_tib_voet = Jc_voet * alpha_voet
% Berekening segment massa's
m_seg = ppmass.*[0.01*2,0.07*2,0.13*2,0.06,0.52];
% Berekening plaats, snelheid en versnelling massamiddelpunten segmenten
rc_tov_Lseg = 1 - [0.50,0.43,0.43,0.56,0.55]; % Waardes uit
antropometrietabel, moet 1 - ..., want vanaf craniaal
for i = 1:n
e_rx_seg(:,i) = rx(:,i+1) - rx(:,i); % Eenheidsvector segment x-
richting
e_ry_seg(:,i) = ry(:,i+1) - ry(:,i);; % Eenheidsvector segment y-
richting
rc_segx(:,i) = rc_tov_Lseg(i).*e_rx_seg(:,i) + rx(:,i); % vector
segment*rc/Lseg + startpositie
rc_segy(:,i) = rc_tov_Lseg(i).*e_ry_seg(:,i) + ry(:,i);
vc_segx(:,i) = NumericalDerivative(t,rc_segx(:,i));
vc_segy(:,i) = NumericalDerivative(t,rc_segy(:,i));
ac_segx(:,i) = NumericalDerivative(t,vc_segx(:,i));
ac_segy(:,i) = NumericalDerivative(t,vc_segy(:,i));
end
% Berekening zwaartekracht
g = - 9.81;
G = m_seg.*g;
% Berekening kracht van tibia op voet
% Ftot = Fg + Ftib_voet + G = m_voet * a_voet
Ftib_voet = [(m_seg(1).*ac_segx(:,1) - Fg(:,1)),(m_seg(1).*ac_segy(:,1) -
G(1) - Fg(:,2))];
% Berekening traagheidsmoment segmenten
rgyr = [0.475,0.302,0.323,1.731,0.504].*l_seg;
Jc_seg = m_seg.*(rgyr.^2);
% Berekening hoek, hoeksnelheid en hoekversnelling segmenten
for i = 1:n
hoek_seg(:,i) = getSegmentOrientatie(e_rx_seg(:,i),e_ry_seg(:,i));
omega_seg(:,i) = NumericalDerivative(t,hoek_seg(:,i));
alpha_seg(:,i) = NumericalDerivative(t,omega_seg(:,i));
end
% Berekening M_Fg en M_Ftib_voet
% Draaipunt D = massamiddelpunt c
% Aangrijpingspunt A van Fg is COP
% Aangrijpingspunt A van Ftib_voet is enkel = [rx(:,2),ry(:,2)]
rAtovD_Fg = [COP(:,1) - rc_segx(:,1), COP(:,2) - rc_segy(:,1)];
,M_Fg = cross2d(rAtovD_Fg,Fg);
rAtovD_Ftib_voet = [rx(:,2) - rc_segx(:,1), ry(:,2) - rc_segy(:,1)];
M_Ftib_voet = cross2d(rAtovD_Ftib_voet,Ftib_voet);
% Berekening Mnetto_tib_voet
% Mtot = M_Fg + M_Ftib_voet + Mnetto_tib_voet = Jc_voet * alpha_voet
Mnetto_tib_voet = Jc_seg(1).*alpha_seg(:,1) - M_Fg - M_Ftib_voet;
% Berekening Ffem_tib
% Ftot = Fvoet_tib + G + Ffem_tib = m * a
% Fvoet_tib = - Ftib_voet
Ffem_tib = [(m_seg(2).*ac_segx(:,2)) + Ftib_voet(:,1),
(m_seg(2).*ac_segy(:,2)) + Ftib_voet(:,2) - G(2)];
% Berekening M_Ffem_tib en M_Fvoet_tib
% Draaipunt D = massamiddelpunt c
% Aangrijpingspunt A van Ffem_tib = [rx(:,3), ry(:,3)]
% Aangrijpingspunt A van Fvoet_tib = [rx(:,2), ry(:,2)]
rAtovD_Ffem_tib = [rx(:,3) - rc_segx(:,2),ry(:,3) - rc_segy(:,2)];
M_Ffem_tib = cross2d(rAtovD_Ffem_tib,Ffem_tib);
rAtovD_Fvoet_tib = [rx(:,2) - rc_segx(:,2),ry(:,2) - rc_segy(:,2)];
Fvoet_tib = - Ftib_voet; % Actie = - reactie
M_Fvoet_tib = cross2d(rAtovD_Fvoet_tib,Fvoet_tib);
% Berekening Mnetto_fem_tib
% Mtot = M_Fvoet_tib + M_Ffem_tib + Mnetto_fem_tib + Mnetto_voet_tib = Jc *
alpha
% Mnetto_voet_tib = - Mnetto_tib_voet
Mnetto_fem_tib = Jc_seg(2).*alpha_seg(:,2) - M_Fvoet_tib - M_Ffem_tib +
Mnetto_tib_voet;
% Opdracht 2
figure(1)
subplot(2,1,1)
plot(t,Mnetto_tib_voet)
title('Moment van tibia op voet')
subplot(2,1,2)
plot(t,Mnetto_fem_tib)
title('Moment van femur op tibia')
Er is sprake van een
dorsaalflexie in de
enkel, want het
moment is negatief en
bij een negatief
moment hoort een
beweging met de klok
mee.
, Er is sprake van een flexie in de knie, want het moment is positief en bij een positief moment
hoort een beweging tegen de klok in.
Negatief moment in de enkel Positief moment in de knie
CPR 3
clear;
load('sprong_CPR3.mat');
load('output_cpr3.mat');
% DATA BEREKEND IN CPR 2
% Opdracht 1
% Berekening segmentlengtes
n = 5;
for i = 1:n
l_seg(i) = sqrt(((rx(1,i+1) - rx(1,i))^2) + ((ry(1,i+1) - ry(1,i))^2));
end
% Krachtenvergelijking voet
% Ftot = Fg + Ftib_voet + G = m_voet * a_voet
% Momentvergelijking voet
% Mtot = M_Fg + M_Ftib_voet + Mnetto_tib_voet = Jc_voet * alpha_voet
% Berekening segment massa's
m_seg = ppmass.*[0.01*2,0.07*2,0.13*2,0.06,0.52];
% Berekening plaats, snelheid en versnelling massamiddelpunten segmenten
rc_tov_Lseg = 1 - [0.50,0.43,0.43,0.56,0.55]; % Waardes uit
antropometrietabel, moet 1 - ..., want vanaf craniaal
for i = 1:n
e_rx_seg(:,i) = rx(:,i+1) - rx(:,i); % Eenheidsvector segment x-
richting
e_ry_seg(:,i) = ry(:,i+1) - ry(:,i);; % Eenheidsvector segment y-
richting
rc_segx(:,i) = rc_tov_Lseg(i).*e_rx_seg(:,i) + rx(:,i); % vector
segment*rc/Lseg + startpositie
rc_segy(:,i) = rc_tov_Lseg(i).*e_ry_seg(:,i) + ry(:,i);
vc_segx(:,i) = NumericalDerivative(t,rc_segx(:,i));
vc_segy(:,i) = NumericalDerivative(t,rc_segy(:,i));
ac_segx(:,i) = NumericalDerivative(t,vc_segx(:,i));
ac_segy(:,i) = NumericalDerivative(t,vc_segy(:,i));