Между измерениями существуют интервалы, длительность которых определяется частотой дискретизации. Чем больше частота дискретизации, тем меньше интервал, тем точнее повторится форма исходного сигнала. То есть частота дискретизации определяет допустимый частотный диапазон входного сигнала. По теореме Котельникова она должна быть в два раза выше максимальной частоты измеряемого сигнала. Вот откуда взялась частота дискретизации 44 кГц. Это удвоенная частота слышимого человеком звука, теоретически.
Посмотрим еще раз на рисунок. Есть что-то неправильное. Ведь сигнал от одного замера до другого может измениться несколько раз, а это значит, что частота дискретизации выбрана гораздо ниже необходимой и в результате сигнал оцифруется с большими искажениями. Сигнал с необходимой частотой дискретизации будет выглядеть, как показано на следующем рисунке. Как видим, в этом случае разницей в замерах действительно можно пренебречь.
Объяснение:
Принцип работы рекурсивный
Объяснение:
# В комментариях я использовал слово итерация в значении запуска новой функции с данными spos/ppos большими на 1 (аналогично с циклом for
# Ввод данных
s = input("Слово: ")
p = input("Шаблон: ")
# match возвращает True, если подстрока s, начинающаяся с позиции spos,
# соответствует шаблону (подстрока p, которая начинается
# с позиции ppos)
def match(spos, ppos):
if (spos == len(s)) or (ppos == len(p)):
return (spos == len(s) and ppos == len(p)) #когда все символы слова либо шаблона пройдены возвращается True, если и шаблон и слово пройдены полностью, в другом случае возвращается False
elif p[ppos] == '?':
return match(spos + 1, ppos + 1) #когда встречается ? начинается новая итерация
elif p[ppos] == '*': #проверка если подстрока - *
for i in range(spos, len(s)): #обход всех оставшихся символов слова
if match(i, ppos + 1):
return True #если дочерняя функция (вызванная выше) выдала True, цикл for заканчивается до выдавая True
else: #выполняется когда не встретилось */?
return (s[spos] == p[ppos]) and (match(spos + 1, ppos + 1))# проверка на равентсво соответствующих (по индексу) символов слова и шаблона и запуск новой функции (итерации)
if match(0, 0):
print('YES') #если результат функции True в консоль выводится 'YES', иначе 'NO'
else:
print('NO')