如何在matlab向量上生成多中频?

如何在matlab向量上生成多中频?,matlab,Matlab,如何在MATLAB向量上生成多个if 我的向量是score=[45,78,90] 我正在打印每个学生的分数。 预期结果是: fail pass pass 但是我的代码不起作用。result=score>=60:'pass':'fail'也许你可以试试下面的代码 v = {'pass', 'fail'}; result = v((score >=60)+1); score=[45,59,72,78,90]; v = {'A','B','F'}; [i,~,~]= find([score

如何在MATLAB向量上生成多个
if

我的向量是
score=[45,78,90]
我正在打印每个学生的分数。
预期结果是:

fail
pass
pass

但是我的代码不起作用。
result=score>=60:'pass':'fail'
也许你可以试试下面的代码

v = {'pass', 'fail'};
result = v((score >=60)+1);
score=[45,59,72,78,90];

v = {'A','B','F'};
[i,~,~]= find([score >=80; score>=60 & score<80; score <60]);
result = v(i);

result =
{
  [1,1] = pass
  [1,2] = fail
  [1,3] = fail
}
45.00   59.00   72.00   78.00   90.00
F       F       B       B       A
更新1 如果你有更多的条件,也许你可以尝试下面的代码

v = {'pass', 'fail'};
result = v((score >=60)+1);
score=[45,59,72,78,90];

v = {'A','B','F'};
[i,~,~]= find([score >=80; score>=60 & score<80; score <60]);
result = v(i);
更新2 对于表格格式的输出,您可以尝试

fprintf('%.2f\t',score)
fprintf('\n'); 
fprintf('%s \t',result{:});
fprintf('\n');

result =
{
  [1,1] = pass
  [1,2] = fail
  [1,3] = fail
}
45.00   59.00   72.00   78.00   90.00
F       F       B       B       A

下面是一个使用辅助函数将标记转换为字符串单元格数组的方法,然后使用
cellfun
打印字符串单元格数组

function str = passfail(grade)
str = cell(size(grade));

for i = 1:length(grade)
    if grade(i) >= 60
        str{i} = 'pass';
    else
        str{i} = 'fail';
    end
end
end
使用方法如下

>> cellfun(@(x) fprintf('%s\n', x), passfail([45,60,72,24]));

fail
pass
pass
fail

使用
看起来像是一个条件运算符的尝试,但该运算符会做一些其他的事情:因为没有循环,您无法解决它,您是否尝试过使用循环来解决它?请不要在收到答案后更改您的问题,因为它会使答案无效。如果你无法在这里调整自己的答案,那就考虑一个新问题。一定要接受其中一个最能帮助你表达感激之情的答案(如果你有足够的声誉,也要投票)。如果要求的分数是a、B、F a,如果分数在6到80 F之间>80 B,那就非常感谢score@EmanHusny不客气。如果你认为我的回答有帮助,请随意投票/接受。非常感谢。是的,我会的,最后一点是如何以表格形式将成绩和分数打印为45 F 78 B 90 A我的尝试:但不是很好的fprintf('.2f',分数);fprintf('\n');fprintf(“%s”,结果{:});fprintf('\n');你能无环求解吗?如果分数从6分到80分>80分,那么要求的分数是A、B、F A。你有什么理由不想使用循环吗?