How do I create a table as a subplot?
Hello all,
So I have a long script of code that gives me many variables from a research experiment I conducted. I am now trying to display all the information in a single figure to make it easy to understand. In the figure I want to have several graphs and then a table giving the average values from those graphs in the bottom quadrant. Here is an image of what I want it to look like: <<
>>
This is made more difficult because I want the graphs and table I have to display the average information from a series of 3 different data files. To accomplish this, I created a loop to average everything together which is as follows:
trial_loop = 1;
while trial_loop <= 3 WBB_Combined_MM
figure(999)
subplot(5,2,1) hold on plot(R_hipangle)
subplot(5,2,3) hold on plot(R_kneeangle)
subplot(5,2,5) hold on plot(R_ankangle)
subplot(5,2,7) hold on plot(Fz_total_filt)
subplot(5,2,9) hold on plot(Fx_total_filt)
subplot(5,2,2) hold on plot(L4_Ydata)
subplot(5,2,4) hold on plot(L4_Velocity_Y_FULL)
% subplot(5,2,6) % hold on % plot(Table)
trial_loop = trial_loop+1; end
My trouble is with the final subplot (5,2,6) which will not display my table. Even if it did I don't think it would average the values from the 3 separate files together. Please help me figure out how to do this.
Thanks for your Help!
p.s
To make this a thorough question here is the code that is being run through the loop. I think it is irrelevant to this question so you do not need to read through it unless you want.
Open_C3D_Basketball; interp_codamotion_basketball;
filtdata = processeddata;
R_Toe_Xdata=filtdata(:,strmatch('R_Toe_X', labels)); R_Toe_Ydata=filtdata(:,strmatch('R_Toe_Y', labels)); R_Toe_Zdata=filtdata(:,strmatch('R_Toe_z', labels)); R_Heel_Xdata=filtdata(:,strmatch('R_Heel_X', labels)); R_Heel_Ydata=filtdata(:,strmatch('R_Heel_Y', labels)); R_Heel_Zdata=filtdata(:,strmatch('R_Heel_Z', labels)); R_Ank_Xdata=filtdata(:,strmatch('R_Ank_X', labels)); R_Ank_Ydata=filtdata(:,strmatch('R_Ank_Y', labels)); R_Ank_Zdata=filtdata(:,strmatch('R_Ank_Z', labels)); R_5th_Xdata=filtdata(:,strmatch('R_5th_X', labels)); R_5th_Ydata=filtdata(:,strmatch('R_5th_Y', labels)); R_5th_Zdata=filtdata(:,strmatch('R_5th_Z', labels)); R_Shin_Xdata=filtdata(:,strmatch('R_Shin_X', labels)); R_Shin_Ydata=filtdata(:,strmatch('R_Shin_Y', labels)); R_Shin_Zdata=filtdata(:,strmatch('R_Shin_Z', labels)); R_Knee_Xdata=filtdata(:,strmatch('R_Knee_X', labels)); R_Knee_Ydata=filtdata(:,strmatch('R_Knee_Y', labels)); R_Knee_Zdata=filtdata(:,strmatch('R_Knee_Z', labels)); R_Quad_Xdata=filtdata(:,strmatch('R_Quad_X', labels)); R_Quad_Ydata=filtdata(:,strmatch('R_Quad_Y', labels)); R_Quad_Zdata=filtdata(:,strmatch('R_Quad_Z', labels)); R_GT_Xdata=filtdata(:,strmatch('R_GT_X', labels)); R_GT_Ydata=filtdata(:,strmatch('R_GT_Y', labels)); R_GT_Zdata=filtdata(:,strmatch('R_GT_Z', labels)); R_ASIS_Xdata=filtdata(:,strmatch('R_ASIS_X', labels)); R_ASIS_Ydata=filtdata(:,strmatch('R_ASIS_Y', labels)); R_ASIS_Zdata=filtdata(:,strmatch('R_ASIS_Z', labels)); R_IlliacCrest_Xdata=filtdata(:,strmatch('R_SHO_X', labels));%The R_SHO and c7 channels were used for the illiac crest since normal illiac crest box malfunctioned% R_IlliacCrest_Ydata=filtdata(:,strmatch('R_SHO_Y', labels)); R_IlliacCrest_Zdata=filtdata(:,strmatch('R_SHO_Z', labels)); L_Toe_Xdata=filtdata(:,strmatch('L_Toe_X', labels)); L_Toe_Ydata=filtdata(:,strmatch('L_Toe_Y', labels)); L_Toe_Zdata=filtdata(:,strmatch('L_Toe_z', labels)); L_Heel_Xdata=filtdata(:,strmatch('L_Heel_X', labels)); L_Heel_Ydata=filtdata(:,strmatch('L_Heel_Y', labels)); L_Heel_Zdata=filtdata(:,strmatch('L_Heel_Z', labels)); L_Ank_Xdata=filtdata(:,strmatch('L_Ank_X', labels)); L_Ank_Ydata=filtdata(:,strmatch('L_Ank_Y', labels)); L_Ank_Zdata=filtdata(:,strmatch('L_Ank_Z', labels)); L_5th_Xdata=filtdata(:,strmatch('L_5th_X', labels)); L_5th_Ydata=filtdata(:,strmatch('L_5th_Y', labels)); L_5th_Zdata=filtdata(:,strmatch('L_5th_Z', labels)); L_Shin_Xdata=filtdata(:,strmatch('L_Shin_X', labels)); L_Shin_Ydata=filtdata(:,strmatch('L_Shin_Y', labels)); L_Shin_Zdata=filtdata(:,strmatch('L_Shin_Z', labels)); L_Knee_Xdata=filtdata(:,strmatch('L_Knee_X', labels)); L_Knee_Ydata=filtdata(:,strmatch('L_Knee_Y', labels)); L_Knee_Zdata=filtdata(:,strmatch('L_Knee_Z', labels)); L_Quad_Xdata=filtdata(:,strmatch('L_Quad_X', labels)); L_Quad_Ydata=filtdata(:,strmatch('L_Quad_Y', labels)); L_Quad_Zdata=filtdata(:,strmatch('L_Quad_Z', labels)); L_GT_Xdata=filtdata(:,strmatch('L_GT_X', labels)); L_GT_Ydata=filtdata(:,strmatch('L_GT_Y', labels)); L_GT_Zdata=filtdata(:,strmatch('L_GT_Z', labels)); L_ASIS_Xdata=filtdata(:,strmatch('L_ASIS_X', labels)); L_ASIS_Ydata=filtdata(:,strmatch('L_ASIS_Y', labels)); L_ASIS_Zdata=filtdata(:,strmatch('L_ASIS_Z', labels)); L_IlliacCrest_Xdata=filtdata(:,strmatch('C7_X', labels)); %The R_SHO and c7 channels were used for the illiac crest since normal illiac crest box malfunctioned. C7 is left Illiac Crest and R_SHO is Right IC% L_IlliacCrest_Ydata=filtdata(:,strmatch('C7_Y', labels)); L_IlliacCrest_Zdata=filtdata(:,strmatch('C7_Z', labels)); L4_Xdata=filtdata(:,strmatch('L4_X', labels)); L4_Ydata=filtdata(:,strmatch('L4_Y', labels)); L4_Zdata=filtdata(:,strmatch('L4_Z', labels));
R_hipangle = [];%Is it necessary to do a right and left for each of these angles or can I combine them somehow?% R_kneeangle = []; R_ankangle = [];
L_hipangle = []; L_kneeangle = []; L_ankangle = [];
startframe = 1; %Start Point% endframe = length(R_Toe_Xdata); %End Point% frame = startframe; %Current%
startframe_new = frame+100
while frame <= endframe R_pel_X = L4_Xdata(frame) - ((L4_Xdata(frame) - R_ASIS_Xdata(frame))*.5); R_pel_Y = L4_Ydata(frame) - ((L4_Ydata(frame) - R_ASIS_Ydata(frame))*.5); L_pel_X = L4_Xdata(frame) - ((L4_Xdata(frame) - L_ASIS_Xdata(frame))*.5); L_pel_Y = L4_Ydata(frame) - ((L4_Ydata(frame) - L_ASIS_Ydata(frame))*.5);
R_trunkseg=atan2d((R_pel_Y-R_GT_Ydata(frame)),(R_pel_X-R_GT_Xdata(frame)));%Need to better convert Trunk Segment% R_thighseg=atan2d((R_GT_Ydata(frame)-R_Knee_Ydata(frame)),(R_GT_Xdata(frame)-R_Knee_Xdata(frame))); %DO I need to incorporate Z vector here?% R_shankseg=atan2d((R_Knee_Ydata(frame)-R_Ank_Ydata(frame)),(R_Knee_Xdata(frame)-R_Ank_Xdata (frame))); R_footseg=180+atand((R_Heel_Ydata(frame)-R_5th_Ydata(frame))/(R_Heel_Xdata(frame)-R_5th_Xdata(frame)));
R_hipangle=[R_hipangle;(R_thighseg-R_trunkseg)]; R_kneeangle=[R_kneeangle;(R_thighseg-R_shankseg)]; R_ankangle=[R_ankangle;(R_footseg-R_shankseg-90)];
L_trunkseg=atan2d((L_pel_Y-L_GT_Ydata(frame)),(L_pel_X-L_GT_Xdata(frame))); L_thighseg=atan2d((L_GT_Ydata(frame)-L_Knee_Ydata(frame)),(L_GT_Xdata(frame)-L_Knee_Xdata(frame))); %DO I need to incorporate Z vector here?% L_shankseg=atan2d((L_Knee_Ydata(frame)-L_Ank_Ydata(frame)),(L_Knee_Xdata(frame)-L_Ank_Xdata (frame))); L_footseg=180+atand((L_Heel_Ydata(frame)-L_5th_Ydata(frame))/(L_Heel_Xdata(frame)-L_5th_Xdata(frame)));
L_hipangle=[L_hipangle;(L_thighseg-L_trunkseg)]; L_kneeangle=[L_kneeangle;(L_thighseg-L_shankseg)]; L_ankangle=[L_ankangle;(L_footseg-L_shankseg-90)];
frame=frame+1; end
figure(1) subplot(3,2,1) plot(R_hipangle(startframe:endframe))%Startframe_new allows collection to begin after 100 frames to avoid taking the max of a peak too early% hold on [R_hipanglemax, index]=max(R_hipangle) plot(index,R_hipanglemax,'o') [R_hipanglemin, index]=min(R_hipangle) plot(index,R_hipanglemin,'o') hold off ylabel('R_ Hip Angle')
subplot(3,2,3) plot(R_kneeangle(startframe:endframe)) hold on [R_kneeanglemax, index]=max(R_kneeangle) plot(index,R_kneeanglemax,'o') [R_kneeanglemin, index]=min(R_kneeangle) plot(index,R_kneeanglemin,'o') hold off ylabel('R_ Knee Angle')
subplot(3,2,5) plot(R_ankangle(startframe:endframe)) hold on [R_ankanglemax, index]=max(R_ankangle) plot(index,R_hipanglemax,'o') [R_ankanglemin, index]=min(R_ankangle) plot(index,R_ankanglemin,'o') hold off ylabel('R_ Ankle Angle')
subplot(3,2,2) plot(L_hipangle(startframe:endframe)) hold on [L_hipanglemax, index]=max(L_hipangle) plot(index,R_hipanglemax,'o') [L_hipanglemin, index]=min(L_hipangle) plot(index,R_hipanglemin,'o') hold off ylabel('L_ Hip Angle')
subplot(3,2,4) plot(L_kneeangle(startframe:endframe)) hold on [L_kneeanglemax, index]=max(L_kneeangle) plot(index,R_kneeanglemax,'o') [L_kneeanglemin, index]=min(L_kneeangle) plot(index,L_kneeanglemin,'o') hold off ylabel('L_ Knee Angle')
subplot(3,2,6) plot(L_ankangle(startframe:endframe)) hold on [L_ankanglemax, index]=max(L_ankangle) plot(index,L_hipanglemax,'o') [L_ankanglemin, index]=min(L_ankangle) plot(index,L_ankanglemin,'o') hold off ylabel('L_ Ankle Angle')
%_____________________________________________________________________________________% %End Joint Angle Code %Start Force Plate Code
[B,A]=butter(2,(2*50/2000)) %Filter% filtdataFxFP1=filtfilt(B,A,FxFP1)
[B,A]=butter(2,(2*50/2000)) %Filter 2% filtdataFxFP2=filtfilt(B,A,FxFP2)
[B,A]=butter(2,(2*50/2000)) %Filter% filtdataFyFP1=filtfilt(B,A,FyFP1)
[B,A]=butter(2,(2*50/2000)) %Filter% filtdataFyFP2=filtfilt(B,A,FyFP2)
[B,A]=butter(2,(2*50/2000)) %Filter% filtdataFzFP1=filtfilt(B,A,FzFP1)
[B,A]=butter(2,(2*50/2000)) %Filter% filtdataFzFP2=filtfilt(B,A,FzFP2);
rate_of_force_development = [];
max_concentric_x=[]; max_concentric_y=[]; max_concentric_z=[];
max_eccentric_x=[]; max_eccentric_y=[]; max_eccentric_z=[];
force_development_x=[]; force_development_y=[]; force_development_z=[];
% _______________________________________________________________________ Fx_total=sqrt((FxFP1).^2 + (FxFP2).^2) %Unfiltered Fy_total=sqrt((FyFP1).^2 + (FyFP2).^2) Fz_total=sqrt((FzFP1).^2 + (FzFP2).^2)
FP1_total=sqrt((FxFP1).^2 + (FyFP1).^2 + (FzFP1).^2)
FP2_total=sqrt((FxFP2).^2 + (FyFP2).^2 + (FzFP2).^2)
FP_both_total=(sqrt((FxFP1).^2 + (FyFP1).^2 + (FzFP1).^2 + (FxFP2).^2 + (FyFP2).^2 + (FzFP2).^2))
Fx_total_filt=sqrt((filtdataFxFP1).^2 + (filtdataFxFP2).^2) %Filtered Fy_total_filt=sqrt((filtdataFyFP1).^2 + (filtdataFyFP2).^2) Fz_total_filt=sqrt((filtdataFzFP1).^2 + (filtdataFzFP2).^2)
FP1_total_filt=sqrt((filtdataFxFP1).^2 + (filtdataFyFP1).^2 + (filtdataFzFP1).^2)
FP2_total_filt=sqrt((filtdataFxFP2).^2 + (filtdataFyFP2).^2 + (filtdataFzFP2).^2)
FP_both_total_filt=(sqrt((filtdataFxFP1).^2 + (filtdataFyFP1).^2 + (filtdataFzFP1).^2 + filtdataFxFP2).^2 + (filtdataFyFP2).^2 + (filtdataFzFP2).^2) % ____________________________________________________________________________________
[Max_conX_FP1,locs] = findpeaks(filtdataFxFP2, 'MinPeakProminence', 100) %Max Concentric FP1% [Max_conY_FP1,locs] = findpeaks(filtdataFyFP2, 'MinPeakProminence', 100) [Max_conZ_FP1,locs] = findpeaks(filtdataFzFP2, 'MinPeakProminence', 1000)
[Max_conX_FP2,locs] = findpeaks(filtdataFxFP2, 'MinPeakProminence', 100) %Max Concentric FP2% [Max_conY_FP2,locs] = findpeaks(filtdataFyFP2, 'MinPeakProminence', 100) [Max_conZ_FP2,locs] = findpeaks(filtdataFzFP2, 'MinPeakProminence', 1000)
[Max_conX_total,locs] = findpeaks(Fx_total_filt, 'MinPeakProminence', 100) %Max Concentric FP1 + FP2% [Max_conY_total,locs] = findpeaks(Fy_total_filt, 'MinPeakProminence', 200) [Max_conZ_total,locs] = findpeaks(Fz_total_filt, 'MinPeakProminence', 1000)
[Max_conFP1_total,locs] = findpeaks(FP1_total_filt, 'MinPeakProminence', 1000)%Max Concentric FP1 total [Max_conFP2_total,locs] = findpeaks(FP2_total_filt, 'MinPeakProminence', 1000)%Max concentric FP2 total
[Max_con_both_total,locs] = findpeaks(FP_both_total_filt, 'MinPeakProminence', 2000)%Max Concentric for all forces combined% % ____________________________________________________________________________________%
figure(2) %Plotting Unfiltered Data of Both Force Plates in 3 Directions% title('Force Plate Data')
subplot(4,3,1) plot(FxFP1, 'b') hold on plot(filtdataFxFP1, 'r') hold off ylabel('Fx of FP1') subplot(4,3,4) plot(FyFP1) hold on plot(filtdataFyFP1, 'r') hold off ylabel('Fy of FP1') subplot(4,3,7) plot(FzFP1) hold on plot(filtdataFzFP1, 'r') hold off ylabel('Fz of FP1')
subplot(4,3,2) plot(FxFP2) hold on plot(filtdataFxFP2, 'r') hold off ylabel('Fx of FP2') subplot(4,3,5) plot(FyFP2) hold on plot(filtdataFyFP2, 'r') hold off ylabel('Fy of FP2') subplot(4,3,8) plot(FzFP2) hold on plot(filtdataFzFP2, 'r') hold off ylabel('Fz of FP2')
subplot(4,3,3) plot(Fx_total) hold on plot(Fx_total_filt, 'r') hold off ylabel('Fx Sum') subplot(4,3,6) plot(Fy_total) hold on plot(Fy_total_filt, 'r') hold off ylabel('Fy Sum') subplot(4,3,9) plot(Fz_total) hold on plot(Fz_total_filt, 'r') hold off ylabel('Fz Sum')
subplot(4,3,10) plot(FP1_total) hold on plot(FP1_total_filt, 'r') hold off ylabel('FP1 Total Sum')
subplot(4,3,11) plot(FP2_total) hold on plot(FP2_total_filt, 'r') hold off ylabel('FP2 Total Sum')
subplot(4,3,12) plot(FP_both_total) hold on plot(FP_both_total_filt, 'r') hold off ylabel('All Forces Total')
FxFP1_invert=max(filtdataFxFP1) - filtdataFxFP1; %Finding max eccentric peaks% FxFP2_invert=max(filtdataFxFP2) - filtdataFxFP2; FyFP1_invert=max(filtdataFyFP1) - filtdataFyFP1; FyFP2_invert=max(filtdataFyFP2) - filtdataFyFP2; FzFP1_invert=max(filtdataFyFP1) - filtdataFzFP1; FzFP2_invert=max(filtdataFyFP2) - filtdataFzFP2;
FP1_total_invert=max(FP1_total_filt) - FP1_total_filt; FP2_total_invert=max(FP2_total_filt) - FP2_total_filt;
Fx_total_invert=max(Fx_total_filt) - Fx_total_filt; Fy_total_invert=max(Fy_total_filt) - Fy_total_filt; Fz_total_invert=max(Fz_total_filt) - Fz_total_filt;
FP_both_total_invert = max(FP_both_total_filt) - FP_both_total_filt;
% ____________________________________________________________________________________ figure(3) %Figure with inverted data for eccentric peaks% title('Inverted Force Plate Data') subplot(4,3,1) plot(FxFP1_invert) [Min_eccX_FP1,locs] = findpeaks(FxFP1_invert,'MinPeakProminence',200) ylabel('FxFP1')
subplot(4,3,2) plot(FxFP2_invert) [Min_eccX_FP2,locs] = findpeaks(FxFP2_invert,'MinPeakProminence',200) ylabel('FxFP2')
subplot(4,3,4) plot(FyFP1_invert) [Min_eccY_FP1,locs] = findpeaks(FyFP1_invert,'MinPeakProminence',200) ylabel('FyFP1') subplot(4,3,5) plot(FyFP2_invert) [Min_eccY_FP2,locs] = findpeaks(FyFP2_invert,'MinPeakProminence',200) ylabel('FyFP2')
subplot(4,3,7) plot(FzFP1_invert) [Min_eccZ_FP1,locs] = findpeaks(FzFP1_invert,'MinPeakProminence',200) ylabel('FzFP1')
subplot(4,3,8) plot(FzFP2_invert) [Min_eccZ_FP2,locs] = findpeaks(FzFP2_invert,'MinPeakProminence',200) ylabel('FzFP2')
subplot(4,3,3) plot(Fx_total_invert) [Min_eccX_total,locs] = findpeaks(Fx_total_invert,'MinPeakProminence',200) ylabel('Fx Total')
subplot(4,3,6) plot(Fy_total_invert) [Min_eccY_total,locs] = findpeaks(Fy_total_invert,'MinPeakProminence',200) ylabel('Fy Total')
subplot(4,3,9) plot(Fz_total_invert) [Min_eccZ_total,locs]=findpeaks(Fy_total_invert,'MinPeakProminence', 400) ylabel('Fz Total')
subplot(4,3,10) plot(FP1_total_invert) [Min_eccFP1_total,locs]=findpeaks(FP1_total_invert,'MinPeakProminence',400) ylabel('FP1 Total')
subplot(4,3,11) plot(FP2_total_invert) [Min_eccFP2_total,locs]=findpeaks(FP2_total_invert,'MinPeakProminence',400) ylabel('FP2 Total')
subplot(4,3,12) plot(FP_both_total_invert) [Min_ecc_both_total,locs] = findpeaks(FP_both_total_invert,'MinPeakProminence',200) ylabel('Max') %_____________________________________________________________________________________ %Impulse Impulse_X_Total = (Fx_total_filt*(2*1/100)) Impulse_Y_Total = (Fy_total_filt*(2*1/100)) Impulse_Z_Total = (Fz_total_filt*(2*1/100))
Impulse_FP1_Total = (FP1_total_filt*(2*1/100)) Impulse_FP2_Total = (FP1_total_filt*(2*1/100))
Impulse_Total = (FP_both_total_filt*(2*1/100))
Impulse_FP1_X = (filtdataFxFP1*(2*1/100)) Impulse_FP1_Y = (filtdataFxFP1*(2*1/100)) Impulse_FP1_Z = (filtdataFxFP1*(2*1/100))
Impulse_FP2_X = (filtdataFxFP2*(2*1/100)) Impulse_FP2_Y = (filtdataFxFP2*(2*1/100)) Impulse_FP2_Z = (filtdataFxFP2*(2*1/100))
Impulse_Total = (FP_both_total_filt*(2*1/100))
Impulse_X_Total_Max = max(Impulse_X_Total) Impulse_Y_Total_Max = max(Impulse_Y_Total) Impulse_Z_Total_Max = max(Impulse_Z_Total) Impulse_Total_Max = max(Impulse_Total)
Impulse_FP1_Total_Max = max(Impulse_FP1_Total) Impulse_FP2_Total_Max = max(Impulse_FP2_Total) %___________________________________________________________________ %Impulse Figure figure(4) %Impulse Plot% title('Impulse')
subplot(4,3,1) plot(Impulse_FP1_X) ylabel('pXFP1') %Used P symbol to represent impulse) subplot(4,3,2) plot(Impulse_FP2_X) ylabel('PXFP2') subplot(4,3,3) plot(Impulse_X_Total) ylabel('PXTotal') subplot(4,3,4) plot(Impulse_FP1_Y) ylabel('PYFP1') subplot(4,3,5) plot(Impulse_FP2_Y) ylabel('PYFP2') subplot(4,3,6) plot(Impulse_Y_Total) ylabel('PYTotal') subplot(4,3,7) plot(Impulse_FP1_Z) ylabel('PZFP1') subplot(4,3,8) plot(Impulse_FP2_Z) ylabel('PZFP2') subplot(4,3,9) plot(Impulse_Z_Total) ylabel('PZTotal') subplot(4,3,10) plot(Impulse_FP1_Total) ylabel('PFP1Total') subplot(4,3,11) plot(Impulse_FP2_Total) ylabel('PFP2Total') subplot(4,3,12) plot(Impulse_Total) ylabel('PTotal') %End WBB_ForcePateCodeUpdated9 %_________________________________________________________________________________ %Start WBB_Velocity_Acceleration_Code L4_Velocity_X = []; L4_Velocity_Y = []; L4_Velocity_Z = [];
L4_Acceleration_X_FULL = []; L4_Acceleration_Y_FULL = []; L4_Acceleration_Z_FULL = [];
startframe = 1; %Start Point% endframe = length(R_Toe_Xdata); %End Point% frame = startframe; %Current%
L4_Velocity_X_FULL = zeros(endframe,1); L4_Velocity_Y_FULL = zeros(endframe,1); L4_Velocity_Z_FULL = zeros(endframe,1);
L4_Acceleration_X_FULL = zeros(endframe,1); L4_Acceleration_Y_FULL = zeros(endframe,1); L4_Acceleration_Z_FULL = zeros(endframe,1); %____________________________________________________________________________________-- %Redoing Loop for Ssome Joint Angles while frame <= endframe R_pel_X = L4_Xdata(frame) - ((L4_Xdata(frame) - R_ASIS_Xdata(frame))*.5); R_pel_Y = L4_Ydata(frame) - ((L4_Ydata(frame) - R_ASIS_Ydata(frame))*.5); L_pel_X = L4_Xdata(frame) - ((L4_Xdata(frame) - L_ASIS_Xdata(frame))*.5); L_pel_Y = L4_Ydata(frame) - ((L4_Ydata(frame) - L_ASIS_Ydata(frame))*.5);
R_trunkseg=atan2d((R_pel_Y-R_GT_Ydata(frame)),(R_pel_X-R_GT_Xdata(frame)));%Need to better convert Trunk Segment% R_thighseg=atan2d((R_GT_Ydata(frame)-R_Knee_Ydata(frame)),(R_GT_Xdata(frame)-R_Knee_Xdata(frame))); %DO I need to incorporate Z vector here?% R_shankseg=atan2d((R_Knee_Ydata(frame)-R_Ank_Ydata(frame)),(R_Knee_Xdata(frame)-R_Ank_Xdata (frame))); R_footseg=180+atand((R_Heel_Ydata(frame)-R_5th_Ydata(frame))/(R_Heel_Xdata(frame)-R_5th_Xdata(frame)));
R_hipangle=[R_hipangle;(R_thighseg-R_trunkseg)]; R_kneeangle=[R_kneeangle;(R_thighseg-R_shankseg)]; R_ankangle=[R_ankangle;(R_footseg-R_shankseg-90)];
L_trunkseg=atan2d((L_pel_Y-L_GT_Ydata(frame)),(L_pel_X-L_GT_Xdata(frame))); L_thighseg=atan2d((L_GT_Ydata(frame)-L_Knee_Ydata(frame)),(L_GT_Xdata(frame)-L_Knee_Xdata(frame))); %DO I need to incorporate Z vector here?% L_shankseg=atan2d((L_Knee_Ydata(frame)-L_Ank_Ydata(frame)),(L_Knee_Xdata(frame)-L_Ank_Xdata (frame))); L_footseg=180+atand((L_Heel_Ydata(frame)-L_5th_Ydata(frame))/(L_Heel_Xdata(frame)-L_5th_Xdata(frame)));
L_hipangle=[L_hipangle;(L_thighseg-L_trunkseg)]; L_kneeangle=[L_kneeangle;(L_thighseg-L_shankseg)]; L_ankangle=[L_ankangle;(L_footseg-L_shankseg-90)];
frame=frame+1; end %_____________________________________________________________________________________________ %Loop for Velocity and Acceleration
startframe = 2; %Start Point% endframe = length(R_Toe_Xdata); %End Point% frame = startframe; %Current%
while frame<endframe
L4_Velocity_Y = (L4_Ydata(frame+1)-L4_Ydata(frame-1))/(2*1/100); L4_Velocity_X = (L4_Xdata(frame+1)-L4_Xdata(frame-1))/(2*1/100); L4_Velocity_Z = (L4_Zdata(frame+1)-L4_Zdata(frame-1))/(2*1/100);
L4_Acceleration_Y = ((L4_Ydata(frame+1)-2*L4_Ydata(frame)+L4_Ydata(frame+1))/((2*1/100).^2)) L4_Acceleration_X = ((L4_Xdata(frame+1)-2*L4_Xdata(frame)+L4_Xdata(frame+1))/((2*1/100).^2)) L4_Acceleration_Z = ((L4_Zdata(frame+1)-2*L4_Zdata(frame)+L4_Zdata(frame+1))/((2*1/100).^2))
L4_Velocity_X_FULL(frame) = L4_Velocity_X; L4_Velocity_Y_FULL(frame) = L4_Velocity_Y; L4_Velocity_Z_FULL(frame) = L4_Velocity_Z;
L4_Acceleration_X_FULL(frame) = L4_Acceleration_X; L4_Acceleration_Y_FULL(frame) = L4_Acceleration_Y; L4_Acceleration_Z_FULL(frame) = L4_Acceleration_Z;
frame=frame+1; end %____________________________________________________________________________________________ %Velocity and Acceleration Figure
figure(5) title('Velocities and Accelerations') subplot(3,2,1) plot(L4_Velocity_Y_FULL) hold on [L4_Velocity_Y_Max, index]=max(L4_Velocity_Y_FULL) plot(index,L4_Velocity_Y_Max,'go') [L4_Velocity_Y_Min, index]=min(L4_Velocity_Y_FULL) plot(index,L4_Velocity_Y_Min,'o') hold off ylabel('L4 Velocity Y')
subplot(3,2,2) plot(L4_Acceleration_Y_FULL) hold on [L4_Acceleration_Y_Max, index]=max(L4_Acceleration_Y_FULL) plot(index,L4_Acceleration_Y_Max,'go') [L4_Acceleration_Y_Min, index]=min(L4_Acceleration_Y_FULL) plot(index,L4_Acceleration_Y_Min,'o') hold off ylabel('L4 Accel Y')
subplot(3,2,3) plot(L4_Velocity_X_FULL) hold on [L4_Velocity_X_Max, index]=max(L4_Velocity_X_FULL) plot(index,L4_Velocity_X_Max, 'go') [L4_Velocity_X_Min, index]=min(L4_Velocity_X_FULL) plot(index,L4_Velocity_X_Min,'o') hold off ylabel('L4 Velocity X')
subplot(3,2,4) plot(L4_Acceleration_X_FULL) hold on [L4_Acceleration_X_Max, index]=max(L4_Acceleration_X_FULL) plot(index,L4_Acceleration_X_Max,'go') [L4_Acceleration_X_Min, index]=min(L4_Acceleration_X_FULL) plot(index,L4_Acceleration_X_Min,'o') hold off ylabel('L4 Accel X')
subplot(3,2,5) plot(L4_Velocity_Z_FULL) hold on [L4_Velocity_Z_Max, index]=max(L4_Velocity_Z_FULL) plot(index,L4_Velocity_Z_Max, 'go') [L4_Velocity_Z_Min, index]=min(L4_Velocity_Z_FULL) plot(index,L4_Velocity_Z_Min,'o') hold off ylabel('L4 Velocity Z')
subplot(3,2,6) plot(L4_Acceleration_Z_FULL) hold on [L4_Acceleration_Z_Max, index]=max(L4_Acceleration_Z_FULL) plot(index,L4_Acceleration_Z_Max,'go') [L4_Acceleration_Z_Min, index]=min(L4_Acceleration_Z_FULL) plot(index,L4_Acceleration_Z_Min,'o') hold off ylabel('L4 Accel Z')
1 件のコメント
回答 (2 件)
0 件のコメント
参考
カテゴリ
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!