Pull to refresh
43
0
Евгений Капи́нос @ekapinos

User

Send message

Практическое применение преобразования Фурье для анализа сигналов. Введение для начинающих

Reading time 9 min
Views 276K

1. Преобразование Фурье и спектр сигнала


Во многих случаях задача получения (вычисления) спектра сигнала выглядит следующим образом. Имеется АЦП, который с частотой дискретизации Fd преобразует непрерывный сигнал, поступающий на его вход в течение времени Т, в цифровые отсчеты — N штук. Далее массив отсчетов подается в некую программку, которая выдает N/2 каких-то числовых значений (программист, который утянул из инета написал программку, уверяет, что она делает преобразование Фурье).

Чтобы проверить, правильно ли работает программа, сформируем массив отсчетов как сумму двух синусоид sin(10*2*pi*x)+0,5*sin(5*2*pi*x) и подсунем программке. Программа нарисовала следующее:

image
рис.1 График временной функции сигнала

image
рис.2 График спектра сигнала

На графике спектра имеется две палки (гармоники) 5 Гц с амплитудой 0.5 В и 10 Гц — с амплитудой 1 В, все как в формуле исходного сигнала. Все отлично, программист молодец! Программа работает правильно.

Это значит, что если мы подадим на вход АЦП реальный сигнал из смеси двух синусоид, то мы получим аналогичный спектр, состоящий из двух гармоник.

Итого, наш реальный измеренный сигнал, длительностью 5 сек, оцифрованный АЦП, то есть представленный дискретными отсчетами, имеет дискретный непериодический спектр.
С математической точки зрения — сколько ошибок в этой фразе?

Теперь начальство решило мы решили, что 5 секунд — это слишком долго, давай измерять сигнал за 0.5 сек.
Читать дальше →
Total votes 51: ↑46 and ↓5 +41
Comments 77

Должность — тимлид

Reading time 11 min
Views 210K
Тимлид (aka ведущий разработчик, team leader) — один из таких «специалистов», обязанности которого многие видят по-разному. Думаю, что складываются различные представления примерно так: поработал кто-то в команде под руководством тимлида, который хорошо справлялся с задачами проектирования системы, и считает теперь, что это именно то, что должен делать тимлид; в другой же команде тимлид плохо справлялся с планированием спринтов, а с другими обязанностями более или менее, и стали считать сотрудники, что планирование — не то, чем должен заниматься тимлид.

От разработчиков, проработавших долгое время в рамках одной компании или даже одной команды чаще услышишь четкое мнение о том, кто такой тимлид и в чем заключаются его обязанности. Повидавшие же разные проекты разработчики и менеджеры постепенно приходят к пониманию, что тимлид может заниматься много чем, какая-то деятельность лучше вписывается в его роль, какая-то хуже, и уже не готовы давать точное определение роли тимлида.
В чем же заключается должность тимлида?
Total votes 49: ↑44 and ↓5 +39
Comments 54

Про Бурали-Форти, Пуанкаре и то самое определение единицы

Reading time 11 min
Views 80K
Если вы, уважаемый мой читатель, имеете обыкновение проводить много времени в интернете, вы наверняка уже видели эту картинку с цитатой:

image

Наверняка также вы задавались вопросом: что, чёрт подери, здесь написано? Формула из этой цитаты интересна тем, что у человека, имеющего высшее математическое образование, этот вопрос возникает столь же неумолимо, как и у любознательного семиклассника. У нелюбознательных семиклассников несколько иной круг интересов, выходящий за рамки данной статьи; однако даже они не откажут себе в удовольствии похихикать над «этими чокнутыми ботаниками», или как оно там формулируется на современном молодёжном сленге.

В нижеследующем тексте я раскрою перед вами тайну этого загадочного сочетания символов. Пожалуйте под кат, однако помните поучительную историю о любопытной Варваре, которой на базаре рассказали про парадокс Банаха-Тарского, отчего она сошла с ума, разрезала себе нос на конечное количество частей и склеила из них рогатую сферу Александера.
N.B. Я предупреждал.
Total votes 145: ↑141 and ↓4 +137
Comments 146

О расширении словаря эмоционально окрашенных слов на базе сообщений Твиттера

Reading time 4 min
Views 4.5K
Социальные сети, в том числе Твиттер, предоставляют огромное количество информации о том, что люди думают по тому или иному поводу, и понятным является желание автоматизировать и улучшать методы оценки общественного мнения на основе данных соц. сетей.

Предположим, нам надо оценить эмоциональную окраску твитов, например, для проведения различных социологических замеров (о том, могут ли такие замеры заменить классические соц. опросы см. здесь). В таком случае, очевидным подходом будет взять словарь эмоционально окрашенных слов, где эмоции выражены количественно, и оценивать твиты по наличию слов из этого словаря. Но тут возникает проблема: такие словари редки, малы и могут устареть, к тому же не соответствуют «живому» языку общения в соц. сетях. Кажется законным пополнять доступные словари новыми словами, при этом приписывая им эмоциональность твитов, в которых эти слова встречаются (точнее, среднее арифметическое по всем твитам, содержащим данное слово). Собственно такая задача предлагается к решению в курсе «Introduction to Data Science». Возникает вопрос: является ли такое продолжение законным? Будет ли полученный словарь зависеть от тех твитов на которых он расширялся или, точнее, насколько будут отличаться два словаря, полученные из одного и того же начального словаря, но дополненные на разных твитах?
Читать дальше →
Total votes 9: ↑6 and ↓3 +3
Comments 9

Почему нельзя делить на ноль, даже если очень хочется?

Reading time 5 min
Views 109K
Недавно на Хабре появилась удивительная статья «Папа, а почему на ноль делить нельзя?», которая собрала массу не менее удивительных комментариев.

Детские вопросы обычно очень сложны («Почему небо ночью темное?», «Почему яблоки падают на землю?») и у взрослых обычно не хватает времени, чтобы их доходчиво объяснить. Да и не всегда взрослые знают ответ на эти вопросы.

Однако, вопрос о делении на ноль ни разу не относится к числу сложных вопросов, и для меня остается загадкой, почему с ним возникает столько проблем. Наверное, виной тому какие-то изъяны в методике преподавания математики в средней школе, в трудностях перехода от изучения арифметики к изучению буквенной алгебры и свойств элементарных функций.

image

Самые серьезные сомнения появляются, я думаю, после изучения рациональных чисел, когда для любого числа x, кроме нуля, вводится понятие обратного числа 1/x, и графика гиперболы y(x)=1/x.

Очевидно, что при делении 1 на очень маленькие числа появляются очень большие числа, и чем меньше мы берем x, тем больше становится 1/x. Почему же мы не можем сказать, что 1/x=∞ — есть некоторое число?

Алгебраическое возражение против этого состоит в следующем. Предположим, что ∞=1/x является числом. Тогда на это число должны распространяться все правила, которые имеют место быть для обычных чисел. В частности, с одной стороны должно быть верно соотношение 0⋅∞=1, а с другой стороны поскольку 0=1−1 должно быть выполнено 0⋅∞=1⋅∞−1⋅∞=0. Таким образом, имеем 1=0, а из этого уже следует, что все числа равны между собой и равны нулю. В самом деле, поскольку для любого числа x верно 1⋅x=x, то 1⋅x=0⋅x=0.

«Ну разве это не полная чушь?» — спросим себя, добравшись до этого места.

Разумеется, это полная чушь, если мы говорим об обычных числах. Но я недаром подчеркнул выше слово «правила». К ним мы вернемся чуть позже, после рассмотрения арифметического возражения против деления на ноль, и поможет нам в этом фасоль.

Вернемся в те времена, когда не было ни компьютеров, ни калькуляторов, ни логарифмических линеек, и поставим перед собой задачу разделить некоторое случайное число, например, на 5.

Для этого берем чашу с фасолью, символизирующую натуральный ряд, и высыпаем из нее какое-то количество зерен на разлинованный лист бумаги:

image

Тем самым, мы установили делимое на нашем бобовом калькуляторе.

Читать дальше →
Total votes 97: ↑81 and ↓16 +65
Comments 96

История одного открытия

Reading time 8 min
Views 87K
На втором курсе института, когда нам рассказывали «Историю науки», я помню, как слушал про студента, который забыл выключить тигель, и совершившего открытие, или одного известного ученого, получившего яблоком по голове, и думал, что это сказки, и в современной науке такого не бывает. В принципе, если посмотреть на публикации в топовых физических журналах, видно, что все они — результат долгого упорного копания в одном направлении. Новоселов с Геймом даже нобелевку получили не за открытие, как таковое, а за «планомерное исследование свойств». Но, тем не менее, открытия в современной науке все-таки случаются, и я хочу рассказать об одном из них, будучи его соавтором.
Читать дальше
Total votes 107: ↑105 and ↓2 +103
Comments 54

Папа, а почему на ноль делить нельзя?

Reading time 6 min
Views 237K
Моя трёхлетняя дочка София в последнее время частенько упоминает «ноль», например, в таком контексте:
— Соня, вот ты вроде сначала не послушалась, а затем послушалась, что же получается?..
— Ну… ноль!

Т.е. ощущение отрицательных чисел и нейтральности нуля уже имеет, о как. Скоро поинтересуется: почему же это на ноль делить нельзя?
И вот решил я простыми словами записать всё, что я ещё помню про деление на ноль и всё такое.
Читать дальше →
Total votes 262: ↑192 and ↓70 +122
Comments 281

Поливаем цветы – просто и быстро

Reading time 6 min
Views 100K
image

Привет, уважаемые Хаброжители!
Недавно мне позвонил отец, рассказал, что у него есть цветок, который он постоянно забывает поливать или наливает чрезмерно много воды, в итоге тот, то засыхает, то наоборот страдает переизбытком влаги.

Будем решать эту проблему с помощью микроконтроллера и C#.
Читать дальше →
Total votes 73: ↑66 and ↓7 +59
Comments 82

Разработка ПО: факты против мифов

Reading time 3 min
Views 69K
Мифы – это попытки осмысления картины окружающего мира, присущие первобытной культуре.

Материальное производство (обработка объектов физического мира) насчитывает десятки тысяч лет истории. Оно прошло путь от каменных пещер до современных небоскребов, от сигнальных костров до мобильной связи, от навигации по звездам до навигации по космическим спутникам. На этом пути был накоплен колоссальный объем знаний естественных наук: математики, физики, химии, географии, геологии, биологии и проч.

То, что производят программисты, нематериально – это brainware, результат коллективного мыслительного процесса проектной команды, материализованный на одном из языков программирования. Программной инженерии чуть больше полувека. Если сравнивать с материальным производством, то необходимо констатировать, что разработка ПО пребывает еще в первобытном состоянии.

За короткую историю в отрасли сложилось большое количество мифов, суеверий и религиозных заблуждения. Эти мифы, суеверия и заблуждения, порой очень похожи на правду. Они получили широкое распространение и пагубно влияют на руководителей, которые никогда сами профессионально не разрабатывали ПО. Следствием этого является применение неадекватных методов и подходов в управлении программистами, что гарантированно приводит проект к провалу.

Вот наиболее распространенные мифы и факты, которые их опровергают.
Читать дальше →
Total votes 150: ↑135 and ↓15 +120
Comments 124

Учимся готовить: Spring 3 MVC + Spring Security + Hibernate

Reading time 12 min
Views 354K
Добрый день! Меня зовут Антон Щастный.

Это моя очередная статья, посвящённая разработке веб приложений на Java. Хочу предложить вам сделать небольшую систему учёта клиентов, написанную с использованием фреймворка Spring и библиотеки Hibernate.

Что будет в приложении:


Будет простой менеджер контактов, позволяющий добавлять в базу новые записи, просматривать имеющиеся, удалять ненужные. Сведения будут храниться в базе данных. Доступ к приложению – через веб, с аутентификацией и авторизацией пользователей.

Что будем использовать:


  • веб фреймворк Spring MVC,
  • фреймворк Spring Security,
  • ORM библиотеку Hibernate,
  • MySQL в качестве СУБД.

Инфраструктура:
  • редактор SpringSource Tool Suite,
  • сборщик проектов Maven,
  • система логгирования Log4j,
  • постоянное подключение к интернету.


В моей предыдущей статье о Spring MVC был упущен ряд моментов по использованию аннотаций в Java-коде и применению Maven для сборки проекта. В данной статье я попытался исправить упущение.

Цель статьи – показать начинающим веб разработчикам совместное использование различных технологий платформы Java.

Читать дальше →
Total votes 43: ↑41 and ↓2 +39
Comments 52

Трудозатраты на реализацию «простого» модуля отправки Email в приложении с модульной архитектурой

Reading time 11 min
Views 26K
На php отправка mail реализуется одной строчкой кода! А на java- нужно 3 недели??!
(из разговоров с разработчиками и менеджерами)


Статья не о том, как отправлять почту на java. Моя цель — показать сложности модульной разработки больших приложений (на примере разработки ERP River).

Итак, задача: реализовать сервис отправки по email (war).

Этапы разработки:


Читать дальше →
Total votes 72: ↑60 and ↓12 +48
Comments 74

Ремесло писателя. Как научиться писать?

Reading time 7 min
Views 153K
Писатель мало чем отличается от плотника: один тешет доски, другой – слова. Постараюсь это доказать. За все время моей трудовой деятельности, моя работа так или иначе была связанна с написанием текстов. Нужно было учиться писать. Постараюсь поделиться своим опытом в получении навыка в данном деле.

image

На моем пути встречались самые разные люди пишущих профессий: от редакторов, копирайтеров, райтеров просто до настоящих писателей. Приставал ко всем с просьбой научить писать, и вразумительного ответа, как жеж таки писать? — я не услышал, но все ответы можно как-то ранжировать.

Читать дальше →
Total votes 108: ↑80 and ↓28 +52
Comments 130

Проблемы передачи utf-8 из формы в JAX-RS (REST)

Reading time 3 min
Views 22K

Введение


Для передачи данных от интерфейса веб-приложения есть несколько методов, но, пожалуй, самый распространенный — отправка формы с MIME-type application/x-www-form-urlencoded. Ещё один вариант — multipart/form-data.

В качестве серверной технологии для приема могут использоваться контроллеры в MVC-фреймворках (из основных Java-технологий следует упомянуть Spring MVC, Java Server Pages, Java Server Faces. Но эти фреймворки довольно сильно осложняют жизнь разработчику интерфейса, если он не знаком с Java или нужен шаг в сторону от того, что позволяет фреймворк. В случае же экспонирования REST-интерфейса бэкендом приложения разработкой фронта упрощается: ей может заниматься человек, знающий базовый javascript и jquery, независимый от разработки бэка. Кроме того, даже при использовании шаблонизатора, выбор сильно расширяется: Apache Velocity, FreeMarker (стоит упомянуть, что Spirng MVC неплохо интегрируется с последними). Тогда данные из формы на стороне сервера записываются в бины, с которыми связан данный view/controller. Правда, у JSF тоже наблюдалась генетическая проблема с кодировками, рассмотрение которой — тема для отдельной статьи.

Краткое введение в JAX-RS было дано в предыдущей статье. И экспонированный через JAX-RS интерфейс может принимать GET и POST запросы с данными форм. О проблемах данного подхода при использовании не-latin-1 и пойдет речь в данной статье.
Читать дальше →
Total votes 12: ↑10 and ↓2 +8
Comments 6

Автоматическая проверка орфографии в EXCEL

Reading time 3 min
Views 34K
Доброе время суток Хаброжители.

Буквально на днях, ко мне и моим коллегам обратились «опытные пользователи» Excel. По специфике работы «опытные пользователи» часто используют офисный пакет для оформления документации. Как ни странно, таблицы Excel так же часто встречаются. Как и на Хабре, не допустимо выпускать документы с орфографическими ошибками. Стандартной возможности excel, по подсветке орфографических ошибок нет. В связи с этим я разработал Add-ins для Excel который бы реализовывал такой функционал.
Читать дальше →
Total votes 24: ↑22 and ↓2 +20
Comments 19

Настройка роутинга для домашнего multihomed сервера

Reading time 12 min
Views 30K
Сейчас наличие нескольких подключений к интернет на одном, в том числе и домашнем сервере — не редкость. Городские локалки, ADSL, 3G модемы… Добавим к этому сети домашние локальные и внешние виртуальные (VPN), и получим ядрёную смесь интерфейсов, между которыми необходимо роутить трафик, балансировать трафик между разными каналами в интернет (когда они есть), и переключаться с нерабочих каналов на рабочие (когда они отваливаются).

Судя по постам в инете, большинство людей, столкнувшихся с этой ситуацией, очень плохо представляет себе, как это настраивается. Надо отметить, что в линухе действительно управление роутингом весьма сложное и запутанное — следствие эволюционного развития и поддержки (частичной) совместимости. Я хочу описать принципы настройки роутинга multihomed серверов на конкретном, достаточно сложном, примере: на сервере три физических сетевых интерфейса (один в домашнюю локалку и два к ADSL-модемам), два ADSL-подключения (ADSL-модемы в режиме bridge, так что pppd поднимает этот же сервер) к разным провайдерам (одно со статическим IP, второе с динамическим), плюс VPN на сервер компании — итого шесть интерфейсов.

Тема достаточно сложная, поэтому для понимания материала потребуется хотя бы минимальное понимание работы роутинга (что такое default route и gateway), файрвола (маркировка пакетов, отслеживание соединений, связь между разными таблицами и цепочками файрвола и роутингом), pppd (скрипты ip-up/ip-down) и протоколов IP и TCP.
Читать дальше →
Total votes 136: ↑129 and ↓7 +122
Comments 46

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Registered
Activity