Как сделать несколько, если на вектор Matlab? - PullRequest
1 голос
/ 15 марта 2020

Как сделать несколько if для вектора MATLAB ?

У меня есть вектор как score=[45,78,90] Я пытаюсь напечатать оценку для каждого учащегося.
ожидаемый результат:

fail
pass
pass

Но мой код не работает result=score>=60:'pass':'fail'

Ответы [ 2 ]

1 голос
/ 16 марта 2020

Может быть, вы можете попробовать код ниже

v = {'pass', 'fail'};
result = v((score >=60)+1);

, который дает

result =
{
  [1,1] = pass
  [1,2] = fail
  [1,3] = fail
}

ОБНОВЛЕНИЕ 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] = F
  [1,2] = F
  [1,3] = B
  [1,4] = B
  [1,5] = A
}

ОБНОВЛЕНИЕ 2

Для вывода в формате таблицы, Вы можете попробовать

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

, что дает

45.00   59.00   72.00   78.00   90.00
F       F       B       B       A
0 голосов
/ 16 марта 2020

Вот метод, использующий вспомогательную функцию для преобразования меток в массив ячеек строк, затем печать массива ячеек строк с использованием 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...