Processing data from a saved .mat file with a function
2 views (last 30 days)
Show older comments
Hello,
I'm struggling with coming to a solution for this particular problem. I have created a function that takes data from a .c3d file and creates a structure and substructure with normalized data for every joint, every plane of motion, maximum, minimum, etc...
Now, I have to save the result of this function with a particular name, automatically if possible. Among the input variables, I always call a file which has the name of a test subject inside (ex: dinamica_giovanni.c3d ). I would like to implement an automatic save with that name inside the function.
After that, I have to place some of this data, depending on different movements (1 to 8) to one in 4 holes (whack a mole structure) and then process the results through anova tests etc...
I would like to create a function that loads a particular name-based, saved data from the previous point and process the data.
The input variables I would like to use are: structure of the test subject, hole number where the mole spawned, movements. For example:
output = function(subject_name, 1, 7)
also in this case, i would like to save my data in a structure (can be the output variable) that collect data every time i run the function
here is function n.1
acq = c3d2c3d(filename);
source = acq.c3dpar.point.labels;
elb_sagitt = acq.data{1,contains(source,'relbanglesxzy')}(:,1);
figure('Name','Intervals Selection')
plot(elb_sagitt);
title('Intervals Selection')
hold on
xr = round(ginput(intervals));
x = xr(:,1);
close 'Intervals Selection'
figure(2)
%Elbow Sagittal/Flexion-Extension
pos1 = [0.37 0.7 0.25 0.2];
subplot('Position',pos1);
plot(elb_sagitt)
ylim([0 120])
title('Elbow: flexion-extension')
elb_smat = [];
for ii = 1:2:intervals
elb_s = eventsnormalize(elb_sagitt,[x(ii) x(ii+1)],100);
elb_smat = cat(2,elb_s,elb_smat);
end
final.elbow.sagittal.data = elb_smat;
%Elbow Transversal/Internal-External Rotation
elb_transvers = acq.data{1,contains(source,'relbanglesxzy')}(:,3);
pos2 = [0.70 0.7 0.25 0.2];
subplot('Position',pos2);
plot(elb_transvers);
ylim([0 60])
title('Elbow: internal-external rotation')
elb_tmat = [];
for ii = 1:2:intervals
elb_t = eventsnormalize(elb_transvers,[x(ii) x(ii+1)],100);
elb_tmat = cat(2,elb_t,elb_tmat);
end
final.elbow.transversal.data = elb_tmat;
%Shoulder Sagittal/Flexion-Extension
sho_sagitt = acq.data{1,contains(source,'rshoanglesxzy')}(:,1);
pos3 = [0.04 0.4 0.25 0.2];
subplot('Position',pos3);
plot(sho_sagitt);
ylim([0 80])
title('Shoulder: flexion-extension')
sho_smat = [];
for ii = 1:2:intervals
sho_s = eventsnormalize(sho_sagitt,[x(ii) x(ii+1)],100);
sho_smat = cat(2,sho_s,sho_smat);
end
final.shoulder.sagittal.data = sho_smat;
%Shoulder Frontal/Ab-Adduction
sho_front = acq.data{1,contains(source,'rshoanglesxzy')}(:,2);
pos4 = [0.37 0.4 0.25 0.2];
subplot('Position',pos4);
plot(sho_front);
ylim([0 60])
title('Shoulder:ab-adduction')
sho_fmat = [];
for ii = 1:2:intervals
sho_f = eventsnormalize(sho_front,[x(ii) x(ii+1)],100);
sho_fmat = cat(2,sho_f,sho_fmat);
end
final.shoulder.frontal.data = sho_fmat;
%Shoulder Transversal/Internal-External Rotation
sho_transvers = acq.data{1,contains(source,'rshoanglesxzy')}(:,3);
pos5 = [0.70 0.4 0.25 0.2];
subplot('Position',pos5);
plot(sho_transvers);
ylim([0 60])
title('Shoulder: internal-external rotation')
sho_tmat = [];
for ii = 1:2:intervals
sho_t = eventsnormalize(sho_transvers,[x(ii) x(ii+1)],100);
sho_tmat = cat(2,sho_t,sho_tmat);
end
final.shoulder.transversal.data = sho_tmat;
%Wrist Sagittal/Flexion-Extension
wri_sagitt = acq.data{1,contains(source,'rwristanglesxzy')}(:,1);
pos6 = [0.19 0.1 0.25 0.2];
subplot('Position',pos6);
plot(wri_sagitt);
ylim([-30 30])
title('Wrist: flexion-extension')
wri_smat = [];
for ii = 1:2:intervals
wri_s = eventsnormalize(wri_sagitt,[x(ii) x(ii+1)],100);
wri_smat = cat(2,wri_s,wri_smat);
end
final.wrist.sagittal.data = wri_smat;
%Wrist Frontal/Ab-Adduction
wri_front = acq.data{1,contains(source,'rwristanglesxzy')}(:,2);
pos7 = [0.56 0.1 0.25 0.2];
subplot('Position',pos7);
plot(wri_front);
ylim([-30 30])
title('Wrist: ab-adduction')
wri_fmat = [];
for ii = 1:2:intervals
wri_f = eventsnormalize(wri_front,[x(ii) x(ii+1)],100);
wri_fmat = cat(2,wri_f,wri_fmat);
end
final.wrist.frontal.data = wri_fmat;
%RTrunk x
trunk_sagitt = acq.data{1,contains(source,'rtrunkangles')}(:,1);
pos8 = [0.04 0.7 0.25 0.2];
subplot('Position',pos8);
plot(trunk_sagitt)
title('Trunk')
tru_smat = [];
for ii = 1:2:intervals
tru_s = eventsnormalize(trunk_sagitt,[x(ii) x(ii+1)],100);
tru_smat = cat(2,tru_s,tru_smat);
end
final.trunk.sagittal.data = tru_smat;
final.elbow.sagittal.MAX.data = max(final.elbow.sagittal.data);
final.elbow.sagittal.MIN.data = min(final.elbow.sagittal.data);
final.elbow.sagittal.ROM.data = final.elbow.sagittal.MAX.data - final.elbow.sagittal.MIN.data;
final.elbow.sagittal.MAX.mean = mean(final.elbow.sagittal.MAX.data);
final.elbow.sagittal.MIN.mean = mean(final.elbow.sagittal.MIN.data);
final.elbow.sagittal.ROM.mean = mean(final.elbow.sagittal.ROM.data);
final.elbow.sagittal.MAX.std = std(final.elbow.sagittal.MAX.data);
final.elbow.sagittal.MIN.std = std(final.elbow.sagittal.MIN.data);
final.elbow.sagittal.ROM.std = std(final.elbow.sagittal.ROM.data);
final.elbow.transversal.MAX.data = max(final.elbow.transversal.data);
final.elbow.transversal.MIN.data = min(final.elbow.transversal.data);
final.elbow.transversal.ROM.data = final.elbow.transversal.MAX.data - final.elbow.transversal.MIN.data;
final.elbow.transversal.MAX.mean = mean(final.elbow.transversal.MAX.data);
final.elbow.transversal.MIN.mean = mean(final.elbow.transversal.MIN.data);
final.elbow.transversal.ROM.mean = mean(final.elbow.transversal.ROM.data);
final.elbow.transversal.MAX.std = std(final.elbow.transversal.MAX.data);
final.elbow.transversal.MIN.std = std(final.elbow.transversal.MIN.data);
final.elbow.transversal.ROM.std = std(final.elbow.transversal.ROM.data);
final.shoulder.sagittal.MAX.data = max(final.shoulder.sagittal.data);
final.shoulder.sagittal.MIN.data = min(final.shoulder.sagittal.data);
final.shoulder.sagittal.ROM.data = final.shoulder.sagittal.MAX.data - final.shoulder.sagittal.MIN.data;
final.shoulder.sagittal.MAX.mean = mean(final.shoulder.sagittal.MAX.data);
final.shoulder.sagittal.MIN.mean = mean(final.shoulder.sagittal.MIN.data);
final.shoulder.sagittal.ROM.mean = mean(final.shoulder.sagittal.ROM.data);
final.shoulder.sagittal.MAX.std = std(final.shoulder.sagittal.MAX.data);
final.shoulder.sagittal.MIN.std = std(final.shoulder.sagittal.MIN.data);
final.shoulder.sagittal.ROM.std = std(final.shoulder.sagittal.ROM.data);
final.shoulder.transversal.MAX.data = max(final.shoulder.transversal.data);
final.shoulder.transversal.MIN.data = min(final.shoulder.transversal.data);
final.shoulder.transversal.ROM.data = final.shoulder.transversal.MAX.data - final.shoulder.transversal.MIN.data;
final.shoulder.transversal.MAX.mean = mean(final.shoulder.transversal.MAX.data);
final.shoulder.transversal.MIN.mean = mean(final.shoulder.transversal.MIN.data);
final.shoulder.transversal.ROM.mean = mean(final.shoulder.transversal.ROM.data);
final.shoulder.transversal.MAX.std = std(final.shoulder.transversal.MAX.data);
final.shoulder.transversal.MIN.std = std(final.shoulder.transversal.MIN.data);
final.shoulder.transversal.ROM.std = std(final.shoulder.transversal.ROM.data);
final.shoulder.frontal.MAX.data = max(final.shoulder.frontal.data);
final.shoulder.frontal.MIN.data = min(final.shoulder.frontal.data);
final.shoulder.frontal.ROM.data = final.shoulder.frontal.MAX.data - final.shoulder.frontal.MIN.data;
final.shoulder.frontal.MAX.mean = mean(final.shoulder.frontal.MAX.data);
final.shoulder.frontal.MIN.mean = mean(final.shoulder.frontal.MIN.data);
final.shoulder.frontal.ROM.mean = mean(final.shoulder.frontal.ROM.data);
final.shoulder.frontal.MAX.std = std(final.shoulder.frontal.MAX.data);
final.shoulder.frontal.MIN.std = std(final.shoulder.frontal.MIN.data);
final.shoulder.frontal.ROM.std = std(final.shoulder.frontal.ROM.data);
final.wrist.sagittal.MAX.data = max(final.wrist.sagittal.data);
final.wrist.sagittal.MIN.data = min(final.wrist.sagittal.data);
final.wrist.sagittal.ROM.data = final.wrist.sagittal.MAX.data - final.wrist.sagittal.MIN.data;
final.wrist.sagittal.MAX.mean = mean(final.wrist.sagittal.MAX.data);
final.wrist.sagittal.MIN.mean = mean(final.wrist.sagittal.MIN.data);
final.wrist.sagittal.ROM.mean = mean(final.wrist.sagittal.ROM.data);
final.wrist.sagittal.MAX.std = std(final.wrist.sagittal.MAX.data);
final.wrist.sagittal.MIN.std = std(final.wrist.sagittal.MIN.data);
final.wrist.sagittal.ROM.std = std(final.wrist.sagittal.ROM.data);
final.wrist.frontal.MAX.data = max(final.wrist.frontal.data);
final.wrist.frontal.MIN.data = min(final.wrist.frontal.data);
final.wrist.frontal.ROM.data = final.wrist.frontal.MAX.data - final.wrist.frontal.MIN.data;
final.wrist.frontal.MAX.mean = mean(final.wrist.frontal.MAX.data);
final.wrist.frontal.MIN.mean = mean(final.wrist.frontal.MIN.data);
final.wrist.frontal.ROM.mean = mean(final.wrist.frontal.ROM.data);
final.wrist.frontal.MAX.std = std(final.wrist.frontal.MAX.data);
final.wrist.frontal.MIN.std = std(final.wrist.frontal.MIN.data);
final.wrist.frontal.ROM.std = std(final.wrist.frontal.ROM.data);
final.trunk.sagittal.MAX.data = max(final.trunk.sagittal.data);
final.trunk.sagittal.MIN.data = min(final.trunk.sagittal.data);
final.trunk.sagittal.ROM.data = final.trunk.sagittal.MAX.data - final.trunk.sagittal.MIN.data;
final.trunk.sagittal.MAX.mean = mean(final.trunk.sagittal.MAX.data);
final.trunk.sagittal.MIN.mean = mean(final.trunk.sagittal.MIN.data);
final.trunk.sagittal.ROM.mean = mean(final.trunk.sagittal.ROM.data);
final.trunk.sagittal.MAX.std = std(final.trunk.sagittal.MAX.data);
final.trunk.sagittal.MIN.std = std(final.trunk.sagittal.MIN.data);
final.trunk.sagittal.ROM.std = std(final.trunk.sagittal.ROM.data);
0 Comments
Answers (1)
Nikhilesh
on 31 Mar 2023
Hi Davide,
Please look at the documentation for " save " function.
0 Comments
See Also
Categories
Find more on Get Started with MATLAB in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!