filename = '3DPlot_KLII_Mori.csv';
data = readtable(filename);
sensorNames = data.Sensor(1:6, 1);
sensorCoordinates = data{1:6, 2:4};
sourceNumbers = data{:, 5};
sourceCoordinates = data{:, 6:end};
lateralSources = data{1:6, 6:end};
medialSources = data{7:end, 6:end};
if strcmpi(kneeSide, "Right")
sensorCoordinates(:,1) = -sensorCoordinates(:,1);
lateralSources(:,1) = -lateralSources(:,1);
medialSources(:,1) = -medialSources(:,1);
elseif strcmpi(kneeSide, "Left")
error('Knee side must be either "Right" or "Left".');
scatter3(sensorCoordinates(:,1), sensorCoordinates(:,2), sensorCoordinates(:,3), ...
80, 'filled', 'MarkerFaceColor', 'b');
for i = 1:length(sensorNames)
text(sensorCoordinates(i,1), sensorCoordinates(i,2), sensorCoordinates(i,3), ...
[' ' char(sensorNames{i})], 'FontSize', 10, 'Color', 'b');
scatter3(lateralSources(:,1), lateralSources(:,2), lateralSources(:,3), ...
60, 'o', 'MarkerEdgeColor', 'r', 'DisplayName', 'Lateral Sources');
scatter3(medialSources(:,1), medialSources(:,2), medialSources(:,3), ...
60, 's', 'MarkerEdgeColor', 'g', 'DisplayName', 'Medial Sources');
title(['3D Plot of Sensors and Sources (' kneeSide ' Knee)']);
scatter(sensorCoordinates(:,1), sensorCoordinates(:,2), 80, 'filled', 'b');
for i = 1:length(sensorNames)
text(sensorCoordinates(i,1), sensorCoordinates(i,2), [' ' char(sensorNames{i})], 'FontSize', 10, 'Color', 'b');
scatter(lateralSources(:,1), lateralSources(:,2), 60, 'ro', 'DisplayName', 'Lateral Sources');
scatter(medialSources(:,1), medialSources(:,2), 60, 'gs', 'DisplayName', 'Medial Sources');
title(['2D Plot (X vs Y) - ' kneeSide ' Knee']);
scatter(sensorCoordinates(:,1), sensorCoordinates(:,3), 80, 'filled', 'b');
for i = 1:length(sensorNames)
text(sensorCoordinates(i,1), sensorCoordinates(i,3), [' ' char(sensorNames{i})], 'FontSize', 10, 'Color', 'b');
scatter(lateralSources(:,1), lateralSources(:,3), 60, 'ro', 'DisplayName', 'Lateral Sources');
scatter(medialSources(:,1), medialSources(:,3), 60, 'gs', 'DisplayName', 'Medial Sources');
title(['2D Plot (X vs Z) - ' kneeSide ' Knee']);