Matlab表-搜索和隔离表中的值

时间:2019-03-07 13:01:04

标签: matlab user-input

我正在尝试根据用户输入隔离表中的数据。 我有下面的

sex=input("please input the gender (M/F): ", 's');
sysbp= input("enter styloic blood pressure: ");
diabp= input("enter dystolic blood pressure: ");


systoliclow=[-inf;-inf;-inf;-inf;-inf;-inf;-inf;-inf;-inf;-inf;
                120;120;120;120;120;120;120;120;120;120;
                130;130;130;130;130;130;130;130;130;130;
                140;140;140;140;140;140;140;140;140;140;
                160;160;160;160;160;160;160;160;160;160]
systolichigh =[119;119;119;119;119;119;119;119;119;119;
                129;129;129;129;129;129;129;129;129;129;
                139;139;139;139;139;139;139;139;139;139;
                159;159;159;159;159;159;159;159;159;159;
                inf;inf;inf;inf;inf;inf;inf;inf;inf;inf]
diastoliclow=[-inf; -inf ; 80; 80 ; 85; 85 ; 90; 90; 100; 100 ;
                -inf; -inf ; 80; 80 ; 85; 85 ; 90; 90;100;100;
                -inf; -inf ; 80; 80 ; 85; 85 ; 90; 90;100;100 ;
                -inf; -inf ; 80; 80 ; 85; 85 ; 90; 90;100;100 ;
                -inf; -inf ; 80; 80 ; 85; 85 ; 90; 90;100;100  ] 
diastolichigh=[79; 79 ;84; 84; 89; 89; 99; 99; inf; inf;
                79; 79 ;84; 84; 89; 89; 99; 99; inf; inf;
                79; 79 ;84; 84; 89; 89; 99; 99; inf; inf
                79; 79 ;84; 84; 89; 89; 99; 99; inf; inf
                79; 79 ;84; 84; 89; 89; 99; 99; inf; inf]
gender={'F' ;'M'; 'F' ;'M'; 'F' ;'M'; 'F' ;'M';'F' ;'M';
        'F' ;'M'; 'F' ;'M'; 'F' ;'M'; 'F' ;'M';'F' ;'M' ;
        'F' ;'M'; 'F' ;'M'; 'F' ;'M'; 'F' ;'M';'F' ;'M';
        'F' ;'M'; 'F' ;'M'; 'F' ;'M'; 'F' ;'M';'F' ;'M';
        'F' ;'M'; 'F' ;'M'; 'F' ;'M'; 'F' ;'M';'F' ;'M' }
values= [-3 ;0; 0 ;0; 0; 1; 2 ;2; 3 ;3; 
          0;0;0;0;0;1;2;2;3;3; 
          0;1;0;1;0;1;2;2;3;3;
          2;2;2;2;2;2;2;2;3;3;
          3;3;3;3;3;3;3;3;3;3]
bpt= table(systoliclow, systolichigh, diastoliclow,diastolichigh, gender, values)


if sysbp>=bpt.systoliclow && sysbp<=bpt.systolichigh && diabp<=bpt.diastoliclow && diap>=bpt.diastolichigh && ismember(sex{'F','M'});

  test = bpt.values

如何遍历表以根据用户输入获取值。

2 个答案:

答案 0 :(得分:2)

您可以使用逻辑索引,无需循环:

isIsolated = sysbp>=bpt.systoliclow & sysbp<=bpt.systolichigh & diabp>=bpt.diastoliclow & diabp<=bpt.diastolichigh & strcmp(bpt.gender,sex);
isolatedTable = bpt(isIsolated,:);

对于输入M12085

>> isolatedTable 

isolatedTable =

  1×6 table

    systoliclow    systolichigh    diastoliclow    diastolichigh    gender    values
    ___________    ____________    ____________    _____________    ______    ______

        120            129              85              89           'M'        1   

如果您仅对变量感兴趣:

>> isolatedValues = bpt(isIsolated,end)

isolatedValues =

  2×1 table

    values
    ______

      1   

答案 1 :(得分:0)

您可以查询适合用户输入的行并遍历其ID:

rows = sysbp>=bpt.systoliclow & sysbp<=bpt.systolichigh & diabp>=bpt.diastoliclow & diabp<=bpt.diastolichigh & strcmp(sex, bpt.gender);

ind = find(rows == 1);

for i=ind
    bpt(i, :)
end

结果:

ans = 

    systoliclow    systolichigh    diastoliclow    diastolichigh    gender    values
    ___________    ____________    ____________    _____________    ______    ______

    -Inf           119             90              99               'F'       2     
    -Inf           119             90              99               'M'       2