why is my code not working for a particular set of input?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
If i give the input, it is working
femaleldlchdrisk([struct('age',22,'ldl',148,'hdl',20,'systolic',120,'diastolic',94,'hasdiabetes',false,'issmoker',true)])
if I give input as; this is not working
femaleldlchdrisk([struct('age',22,'ldl',148,'hdl',20,'systolic',120,'diastolic',94,'hasdiabetes',false,'issmoker',true) struct('age',42,'ldl',178,'hdl',50,'systolic',140','diastolic',104','hasdiabetes',false,'issmoker',true)])
code
function [total] = femaleldlchdrisk(P)
agepts = 0;
ptssum = 0;
if P.age <= 34
agepts = -9;
elseif P.age >=35 && P.age <=39
agepts = -4;
elseif P.age >=40 && P.age <=44
agepts = 0;
elseif P.age >=45 && P.age <=49
agepts = 3;
elseif P.age >=50 && P.age <=54
agepts = 6;
elseif P.age >=55 && P.age <=59
agepts = 7;
elseif P.age >=60 && P.age <=64
agepts = 8;
elseif P.age >=65 && P.age <=69
agepts = 8;
elseif P.age >=70 && P.age <=74
agepts = 8;
elseif P.age >=74
agepts = 8;
end
ptssum = ptssum + agepts;
ldlpts = 0;
if P.ldl < 100
ldlpts = -2;
elseif P.ldl >= 100 && P.ldl <= 129
ldlpts = 0;
elseif P.ldl >= 130 && P.ldl <= 159
ldlpts = 0;
elseif P.ldl >= 160 && P.ldl <= 190
ldlpts = 2;
elseif P.ldl >= 190
ldlpts = 2;
end
ptssum = ptssum + ldlpts;
hdlpts = 0;
if P.hdl < 35
hdlpts = 5;
elseif P.hdl >= 35 && P.hdl<= 44
hdlpts = 2;
elseif P.hdl >= 45 && P.hdl<= 49
hdlpts = 1;
elseif P.hdl >= 50 && P.hdl<= 59
hdlpts = 0;
elseif P.hdl >= 60
hdlpts = -2;
end
ptssum = ptssum + hdlpts;
bppts1 = 0;
if P.systolic < 120
bppts1 = -3;
elseif (P.systolic >= 120 && P.systolic<= 129 )&&(P.diastolic >= 80 && P.diastolic <= 84)
bppts1 = 0;
elseif (P.systolic >= 130 && P.systolic<= 139 )&&(P.diastolic >= 85 && P.diastolic <= 89)
bppts1 = 0;
elseif (P.systolic >= 140 && P.systolic<= 159 )&&(P.diastolic >= 90 && P.diastolic <= 99)
bppts1 = 2;
elseif (P.systolic >= 160)&&(P.diastolic >= 100)
bppts1 = 3;
end
ptssum = ptssum + bppts1;
bppts2 = 0;
if P.diastolic < 80
bppts2 = -3;
elseif (P.diastolic >= 80 && P.diastolic <= 84)
bppts2 = 0;
elseif (P.diastolic >= 85 && P.diastolic <= 89)
bppts2 = 0;
elseif (P.diastolic >= 90 && P.diastolic <= 99)
bppts2 = 2;
elseif (P.diastolic >= 100)
bppts2 = 3;
end
ptssum = ptssum + bppts2;
diabetpts = 0;
if strcmp(P.hasdiabetes, true) %|| P.hasdiabetes == 'Yes'
diabetpts = 4;
elseif strcmp(P.hasdiabetes,false) %|| P.hasdiabetes == 'No'
diabetpts = 0;
end
ptssum = ptssum + diabetpts;
smokerpts = 0;
if strcmp(P.issmoker,true) %|| P.issmoker == 'Yes'
smokerpts = 2;
elseif strcmp(P.issmoker, false) %|| P.issmoker == 'No'
smokerpts = 0;
end
ptssum = ptssum + smokerpts;
total = ptssum;
0 commentaires
Réponse acceptée
Rik
le 1 Déc 2021
Your code doesn't support array inputs.
The easy way to deal with this is what I outline below. Note that this is not the optimal method.
function total = femaleldlchdrisk(P)
if numel(P)>1
for n=1:numel(P)
%this assumes a scalar output
total(n)=femaleldlchdrisk(P(n));
end
return
end
%rest of your function goes here
end
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Whos dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!