필터 지우기
필터 지우기

Why is my script not enterering the elseif argument

조회 수: 1 (최근 30일)
Marcel Vogelsang
Marcel Vogelsang 2022년 5월 11일
댓글: Walter Roberson 2022년 5월 11일
tasks = {'hop_inv','hop_uninv'};
tasks_name = tasks; % for plot title
SIDE = {'ipsilateral'};
JOINTS ={'ankle','knee','hip'};
% groups to plot for comparison (küerzel, timepoint)
COMPARISON = [{'SBA','baseline'}; ...
{'SBA','0mt'}];
COLOR = {'b','r'};
COLOR2 = {'c','m'};
test = [COMPARISON,tasks'];
for subj = 1:size(sub.([COMPARISON{1,1},'_',COMPARISON{1,2}]),2)
plot_setup_SkinMarker
set(0,'CurrentFigure',f1);
for grp = 1:size(COMPARISON,1)
group = [COMPARISON{grp,1},'_',COMPARISON{grp,2}];
for sde=1:length(SIDE) % Seite
for tsk= 1:length(tasks)
for jo = 1:length(JOINTS)
movement_tmp = fieldnames(sub.(group)(subj).(tasks{tsk}).(SIDE{sde}).(JOINTS{jo}));
movement = [movement_tmp(1),movement_tmp(4),movement_tmp(7)];
if strcmp(JOINTS{jo},'ankle')
movement = {'dflex','add','eversion'};
else
movement = {'flex','abd','extrot'};
end
k=[1,4,7;2,8,5;3,9,6];
for moNr = 1:length(movement)
ka=k(jo,moNr); % which plot (= which axis)
% set sign
if (strcmp(JOINTS{jo},'ankle')&&strcmp(movement{moNr},'eversion'))...
||(strcmp(JOINTS{jo},'knee')&&strcmp(movement{moNr},'abd'))...
||(strcmp(JOINTS{jo},'knee')&&strcmp(movement{moNr},'extrot'))...
||(strcmp(JOINTS{jo},'hip')&&strcmp(movement{moNr},'abd'))...
||(strcmp(JOINTS{jo},'hip')&&strcmp(movement{moNr},'extrot'))
sign=-1;
else
sign=1;
end
set(f1,'CurrentAxes',ha(ka));
mean = sign*(sub.(group)(subj).(tasks{tsk}).(SIDE{sde})...
.(JOINTS{jo}).([movement{moNr} '_mean']));
SD = sub.(group)(subj).(tasks{tsk}).(SIDE{sde}).(JOINTS{jo})...
.([movement{moNr} '_std']);
if grp == 1 %baseline group
p(tsk) = plot(mean,COLOR{tsk},'LineWidth',1.0);
plot(mean + SD,COLOR{tsk},'LineWidth',0.1,'LineStyle','--')
plot(mean - SD,COLOR{tsk},'LineWidth',0.1,'LineStyle','--')
elseif grp == 2
q(tsk) = plot(mean,COLOR2{tsk},'LineWidth',1.0);
plot(mean + SD,COLOR2{tsk},'LineWidth',0.1,'LineStyle','--')
plot(mean - SD,COLOR2{tsk},'LineWidth',0.1,'LineStyle','--')
end
clearvars SD to_plot
end
end
end % group
% legende
legend(ha(9),[p,q],[strjoin([test(1,2),'_',test(1,3)]), strjoin([test(1,2),'_',test(2,3)]), strjoin([test(2,2),'_',test(1,3)]), strjoin([test(2,2),'_',test(2,3)])],...
'Location','southeast','Orientation','horizontal','FontSize',5.5,'NumColumns',1);
it is a pre-existing script, which I tried to change so that the output plot consists 4 means mit std. I want to have them 4 different colors. The original only consisted of the p(tsk) = plot(..) without any if/else argument. Now I added an variable COLOR2 with two extra colors and this if/else but it never enters the elseif and misses the variable q in the legend function. I know it's a pretty long code, but maybe someone can help.
Cheers Marcel

답변 (1개)

Walter Roberson
Walter Roberson 2022년 5월 11일
end % group
No, that is incorrect. You have for moNr, within for jo, within for tsk, so that "end" is matching tsk. You do the legend() at that point assuming that p and q have both been assigned to. But q is assigned to when grp changes. Your call to legend is within for sde which is within for grp so it will be a while before you see a change in grp.
  댓글 수: 2
Marcel Vogelsang
Marcel Vogelsang 2022년 5월 11일
So do you suggest to move the legend()?
Walter Roberson
Walter Roberson 2022년 5월 11일
Perhaps you need to reorder your loops.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Legend에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by