当我回答这个问题时,我的回答是这样开始的:“首先,您可以通过将所有名称存储在一个单元格中来摆脱所有 if 语句。”
“初学者”位是因为我认为我可以使用矢量化解决方案添加编辑。但是当我尝试这样做时,我遇到了矢量化 mrdivide (b/a) 的使用的麻烦。
我的问题(在代码下方标记)是是否可以在b(z,:)/a(z,:)
不使用循环的情况下解决。换句话说,为b/a
矩阵的每一行独立求解。
person = [98 206 35 114;
60 206 28 52;
100 210 31 116;
69 217 26 35;
88 213 42 100];
person1 = [93 208 34 107];
allNames = {'Cameron'; 'David'; 'Mike'; 'Bill'; 'Joe'};
n = 5;
a = max(person,repmat(person1,n,1));
b = min(person,repmat(person1,n,1));
for z = 1:5
percent_error = b(z,:)/a(z,:); %// Here is my question
if percent_error >= 0.85
disp(['Match, its ', allNames{z} ,'!'])
end
end