在输入一个字段值MATLAB时从结构中检索数据

时间:2015-05-29 08:38:22

标签: matlab structure field

我创建了一个关于病人的结构。它的字段是姓名,年龄等。我希望能够通过输入其姓名或任何其他独特财产来检索患者的所有信息。换句话说,我怎样才能找到患者的指数?提前谢谢。

patient(10).name = 'Chuck';
patient(10).age = 29;

patient(11).name = 'Sarah';
patient(11).name = 28;

2 个答案:

答案 0 :(得分:1)

结构不是做你想做的事情的好数据类型。

我建议使用table。如果您已在结构中包含数据,请致电

patientTable = struct2table(patient);

然后,您获得索引:

chucksIndex = find( strcmp( patientTable.name, 'Chuck'))

你得到病人的信息

patientTable(chucksIndex,:)

(注意:如果所有你需要的索引是查找,你不需要调用find,strcmp的逻辑索引就足够了。)

双击工作区浏览器中的表格以类似Excel的方式显示数据。您在代码中唯一需要更改的是访问数据。而不是

patient(10).name
patient(10).age

你写

patientTable.name{10}
patientTable.age(10)

如果您不想使用表格,可以将索引作为:

chucksIndex = find(strcmp({patient.name},'Chuck'));

答案 1 :(得分:0)

首先,有一个错误,它应该是patient(11).name = 28;

这是一种应该有效的方法。我在1点开始为Chuck和Sarah开始索引。

patient(1).name = 'Chuck';
patient(1).age = 29;

patient(2).name = 'Sarah';
patient(2).age = 28;


% Assign to cell array
plist = {patient.name};

% Choose the name of a patient
choose_patient = 'Sarah';

% Find the chosen patient in the list
ix_patient = find(strcmp(plist, choose_patient))

% Get full entry for that patient
patient(ix_patient)