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



我试图根据用户输入将数据隔离。我有以下 -

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

我如何循环浏览表以根据用户输入获取值。

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

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   

如果您仅对 value 变量感兴趣:

>> isolatedValues = bpt(isIsolated,end)
isolatedValues =
  2×1 table
    values
    ______
      1   

您可以查询适合用户输入并迭代其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     

相关内容

  • 没有找到相关文章

最新更新