|
||||||||||||||||||||||||||||||||||||||
Меню:
Главная
Форум
Литература: Программирование и ремонт Импульсные блоки питания Неисправности и замена Радиоэлектронная аппаратура Микросхема в ТА Рубрикатор ТА Кабельные линии Обмотки и изоляция Радиоаппаратура Гибкие диски часть 2 часть 3 часть 4 часть 5 Ремонт компьютера часть 2 Аналитика: Монтаж Справочник Электроника Мощные высокочастотные транзисторы 200 микросхем Полупроводники ч.1 Часть 2 Алгоритмические проблемы 500 микросхем 500 микросхем Сортировка и поиск Монады Передача сигнала Электроника Прием сигнала Телевидиние Проектирование Эвм Оптимизация Автомобильная электроника Поляковтрансиверы Форт Тензодатчик Силовые полевые транзисторы Распределение частот Резисторные и термопарные Оберон Открытые системы шифрования Удк |
[103] +v -vw R C v = v0 + 1/C J0 idt + Ri
vo Рис. 3.33: RC-цепь и связанная с ней диаграмма потока сигналов. (cons-stream initial-value (add-streams (scale-stream integrand dt) int))) int) На рисунке 3.32 показана система преобразования сигналов, соответствующая процедуре integral. Входной поток делится на отрезки dt и пропускается через сумматор, а вывод сумматора опять направляется на его вход. Ссылка на самого себя в определении int отражена на диаграмме в виде цикла обратной связи, соединяющего выход сумматора с одним из его входов. Упражнение 3.73. Можно моделировать электрические цепи с помощью потоков, представляющих значения тока или напряжения в определенные моменты времени. Допустим, например, что у нас имеется цепь RC (RC circuit), состоящая из резистора с сопротивлением R и конденсатора емкостью C, соединенных последовательно. Значение напряжения v в зависимости от заданного тока i определяется формулой, показанной на рис. 3.33. Структура формулы показана на прилагаемой диаграмме потока сигналов. Напишите процедуру RC, моделирующую эту цепь. На входе RC должна получать значения R, C и dt, и выдавать процедуру, которая принимает на входе поток значений тока i и начальное значение напряжения v0, а на выходе выдает поток значений напряжения v. Например, у Вас должна быть возможность смоделировать при помощи RC RC-цепь с R = 5 ом, C = 1 фараде, и временным шагом в 0,5 секунды, вычислив (define RC1 (RC 5 1 0.5)). Здесь RC1 определяется как процедура, которая принимает на входе поток, представляющий временную последовательность токов, и исходное напряжение на конденсаторе, а на выходе дает временной поток напряжений. Упражнение 3.74. Лиза П. Хакер разрабатывает систему для обработки сигналов, приходящих от физических сенсоров. Один из важных инструментов, который она хочет построить, - это сигнал, описывающий переходы входного сигнала через ноль (zero crossings). Выходной сигнал должен равняться +1, когда сигнал на входе меняется с отрицательного на положительный, -1, когда сигнал меняется с положительного на отрицательный, и 0 в остальных случаях. (Допустим, что знак нулевого входа положителен). Например, типичный входной сигнал и связанный с ним сигнал перехода через ноль могут выглядеть так: ... 1 2 1.5 1 0.5 -0.1 -2 -3 -2 -0.5 0.2 3 4 ... ... 00000 -1 000 0 10 0... В Лизиной системе сигнал от сенсора представляется как поток sense-data, а zero-crossings представляет соответствующий поток пересечений нуля. Для начала Лиза пишет процедуру sign-change-detector, которая берет два значения в качестве аргументов и, сравнив их знаки, выдает 0, 1 или -1. Затем она строит поток переходов через ноль следующим образом: (define (make-zero-crossings input-stream last-value) (cons-stream (sign-change-detector (stream-car input-stream) last-value) (make-zero-crossings (stream-cdr input-stream) (stream-car input-stream)))) (define zero-crossings (make-zero-crossings sense-data 0)) Мимо проходит Лизина начальница Ева Лу Атор и замечает, что программа приблизительно равносильна следующей, написанной с использованием обобщенной версии stream-map из упражнения 3.50: (define zero-crossings (stream-map sign-change-detector sense-data (выражение))) Завершите программу, вставив необходимое (выражение). Упражнение 3.75. К сожалению, Лизин детектор перехода через ноль из упражнения 3.74 оказывается недостаточным, потому что зашумленный сигнал от сенсоров приводит к ложным срабатываниям. Инженер-электронщик Дайко Поправич предлагает Лизе сгладить сигнал, чтобы отфильтровать шум, прежде, чем отлавливать пересечение нуля. Лиза принимает его совет и решает извлечь переходы через ноль из сигнала, полученного взятием среднего арифметического каждого значения входных данных с предыдущим значением. Она объясняет задачу своему помощнику Хьюго Думу, и тот пытается реализовать идею, поправив Лизин текст следующим образом: (define (make-zero-crossings input-stream last-value) (let ((avpt (/ (+ (stream-car input-stream) last-value) 2))) (cons-stream (sign-change-detector avpt last-value) (make-zero-crossings (stream-cdr input-stream) avpt)))) Этот код неверно реализует замысел Лизы. Найдите ошибку, внесенную Хьюго, и исправьте ее, не меняя структуру программы. (Подсказка: придется увеличить число аргументов make-zero-crossings.) Упражнение 3.76. Ева Лу Атор недовольна подходом Хьюго из упражнения 3.75. Написанная им программа не модульна, поскольку смешивает операции сглаживания и отлова пересечений ноля. Например, тест на пересечение не должен изменяться, если Лизе удастся найти другой способ улучшить качество входного сигнала. Помогите Хьюго и напишите процедуру
y Рис. 3.34: «Аналоговая компьютерная цепь», которая решает уравнение dy/dt f (y). smooth, которая берет на входе поток, а на выходе выдает поток, элементы которого получены усреднением каждых двух последовательных элементов входного потока. Затем используйте smooth как компоненту и реализуйте детектор перехода через ноль в более модульном стиле. 3.5.4 Потоки и задержанное вычисление Процедура integral в конце предыдущего раздела показывает, как с помощью потоков можно моделировать системы обработки сигналов, которые содержат циклы обратной связи. Цикл обратной связи для сумматора, показанный на рис. 3.32, моделируется тем, что внутренний поток int в процедуре integral определяется с использованием себя самого: (define int (cons-stream initial-value (add-streams (scale-stream integrand dt) int))) Способность интерпретатора работать с таким косвенным определением зависит от delay, встроенного в cons-stream. Без этой задержки интерпретатор не мог бы построить int, не вычислив оба аргумента cons-stream, а для этого нужно, чтобы int уже был определен. В общем случае, delay играет ключевую роль, когда мы моделируем системы обработки сигналов с обратной связью при помощи потоков. В отсутствие задержки нам приходилось бы формулировать модели так, чтобы вход всякого обрабатывающего блока полностью вычислялся, прежде чем блок выдает что-либо на выходе. Такое условие исключает циклы. К сожалению, потоковые модели систем с циклами могут требовать применения задержек помимо той, которая «спрятана» в cons-stream. Например, на рисунке 3.34 показана система обработки сигналов, решающая дифференциальное уравнение dy/dt = f (y), где f - заданная функция. На рисунке показан отображающий блок, который применяет f ко входному сигналу, связанный в цикл обратной связи с интегратором. Это очень похоже на работу аналоговых схем, действительно используемых для решения такого рода уравнений. Если нам дано начальное значение yo, мы могли бы попытаться смоделировать эту систему с помощью процедуры (define (solve f y0 dt) (define y (integral dy y0 dt)) |
Среды: Smalltalk80 MicroCap Local bus Bios Pci 12С ML Микроконтроллеры: Atmel Intel Holtek AVR MSP430 Microchip Книги: Емкостный датчик 500 схем для радиолюбителей часть 2 (4) Структура компьютерных программ Автоматическая коммутация Кондиционирование и вентиляция Ошибки при монтаже Схемы звуковоспроизведения Дроссели для питания Блоки питания Детекторы перемещения Теория электропривода Адаптивное управление Измерение параметров Печатная плата pcad pcb Физика цвета Управлении софтверными проектами Математический аппарат Битовые строки Микроконтроллер nios Команды управления выполнением программы Перехода от ahdl к vhdl Холодный спай Усилители hi-fi Электронные часы Сердечники из распылённого железа Анализ алгоритмов 8-разрядные КМОП Классификация МПК История Устройства автоматики Системы и сети Частотность Справочник микросхем Вторичного электропитания Типы видеомониторов Радиобиблиотека Электронные системы Бесконтекстный язык Управление техническими системами Монтаж печатных плат Работа с коммуникациями Создание библиотечного компонента Нейрокомпьютерная техника Parser Пи-регулятор ч.1 ПИ-регулятор ч.2 Обработка списков Интегральные схемы Шина ISAВ Шина PCI Прикладная криптография Нетематическое: Взрывной автогидролиз Нечеткая логика Бытовые установки (укр) Автоматизация проектирования Сбор и защита Дискретная математика Kb радиостанция Энергетика Ретро: Прием в автомобиле Управление шаговым двигателем Магнитная запись Ремонт микроволновки Дискретные системы часть 2 | ||||||||||||||||||||||||||||||||||||