#matlab
#matlab
Вопрос:
У меня есть матрица testNumbers = [1, 3, 8, 6, 9, 7]
.
Что я хочу сделать сейчас, так это заставить пользователя запрашивать ввод и проверить, равен ли этот ввод testNumbers(1)
, если он что-то делает (на потом, % do something), и через 4 секунды продолжайте вводить пользовательское число снова, но на этот раз проверьте, testNumbers(2)
равно ли оно пользовательскому запросу. Затем это будет продолжаться до тех length(testNumbers)
пор, пока не закончится.
Можно ли это сделать? Я предполагаю, что необходимо использовать цикл for, но я совершенно новичок, и поэтому пример был бы отличным. Тогда я могу продолжить создание этого.
Пример:
testNumbers = [1, 3, 8, 6, 9, 7]
- Запускается таймер (4 секунды)
- Пользователь вводит 1 в течение t <= 4 сек
- Сделайте что-то вроде disp(‘Correct’)
- Пользователь вводит 3 в течение t <= 4 сек
- Сделайте что-то вроде disp(‘Correct’)
- Пользователь должен ввести 8, но время истекает
- Сделайте что-то вроде disp(‘время истекло’)
- Пользователь вводит 5 в течение t <= 4 сек, но неверно, должно быть 6
- Сделайте что-то вроде disp(‘Wrong’)
- Продолжайте в том же духе, пока матрица не закончится…
Ответ №1:
Вы можете использовать tic
и toc
для измерения времени, прошедшего между двумя точками. Вы можете поместить tic
перед пользовательским вводом (для запуска таймера), а затем использовать a toc
везде, где хотите, чтобы проверить время, прошедшее с этого момента. Вы можете использовать несколько toc
примеров, и все они будут ссылаться на ближайший tic
.
% Start the timer
tic
% Prompt the user for input
value = input('Enter a number:');
elapsed_time = toc;
% If the response took more than 4 seconds
if elapsed_time > 4
disp('took too long')
end
Если вместо этого (как указано в вашем названии) вы хотите подождать 4 секунды, вы можете использовать pause
для приостановки выполнения вашей программы на определенный промежуток времени
input('Enter a number:');
pause(4) % Pause for 4 seconds
% Do something else
Комментарии:
1. Я изменил свой заголовок. Возможно ли получить время, прошедшее между каждым tic и toc?
2. @Lasse Это именно то, что
toc
возвращается. Обновлено, чтобы быть немного понятнее3. Я понял. Можно ли прервать запрос, если время истекло? Например: если истекшее время> 4 — запрос прерывания — сделайте что-нибудь — прямо сейчас пользователь может вводить данные, даже если время истекло. Могу ли я предотвратить это или, по крайней мере, отменить что-то среднее?
4. @Lasse К сожалению, в MATLAB нет способа программно завершить выполнение команды. Вы могли бы изменить приглашение командной строки в диалоговое окно и попытаться сделать что-то вроде этого
5. Сделает это. Спасибо.