MATLAB: нужно выяснить, как применять некоторые вычисления в цикле if к каждому значению массива 0: 10: 100 - PullRequest
0 голосов
/ 09 марта 2019

Я знаю, что должен использовать какой-то цикл for, но я не уверен, как. В основном у меня есть массив значений 0: 10: 100, которые соответствуют результатам экзаменационных испытаний. Первые 60 марок делятся пополам, следующие 10 оставляются в покое, а любые отметки выше 70 удваиваются. Мне удалось создать скрипт для этого с введенным пользователем значением:

module_mark = input('input number between 0 and 100: ');
if module_mark < 60
    exam_mark = module_mark/2
elseif module_mark > 60 && module_mark <= 70
    exam_mark = (module_mark-60)+30
elseif module_mark > 70 && module_mark <=100
    a = module_mark-60;
    if a < 10
    exam_mark = 30+a
    elseif a > 10
    exam_mark = 30+10+(module_mark-70)*2
    end
elseif module_mark > 100
    disp('error cannot get over 100')
end

Мне нужно выполнить те же вычисления, но со значениями массива 0: 10: 100 вместо введенного пользователем значения. Затем мне нужно поместить выведенные значения в какую-то матрицу, чтобы я мог нанести отметки модуля на оценки экзамена. Есть предложения?

Спасибо

1 Ответ

0 голосов
/ 09 марта 2019

Похоже, это то, что вы ищете:

myscores = 0:10:100;
output = zeros(1, length(myscores));
for ii = 1:length(myscores)
    mark = myscores(ii);
    if mark < 60
        output(ii) = mark / 2;
    elseif mark >= 60 && mark <= 70
        output(ii) = mark;
    elseif mark > 70
        output(ii) = mark * 2;
    else
        disp('error on mark= ')
        mark
    end
end

matrix_out = [myscores' output'];   
...