Форум программистов, компьютерный форум, киберфорум
Наши страницы
Simulink
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Constanti
0 / 0 / 0
Регистрация: 23.04.2017
Сообщений: 25
1

Установка времени задержки сигнала

06.09.2018, 20:37. Просмотров 934. Ответов 4

Доброго времени суток!
Столкнулся с задачей определения времени задержки сигнала в Симулинке.

Имеется синусоидальный сигнал (рис.1), ЗАКРЫТЫЙ блок в котором к нему добавляется шумовая составляющая и задержка(рис.2). Сигнал на выходе (рис.3). По нему можно сделать вывод, что время задержки приблизительно 744 нс.

Первое что пришло в голову для установления времени задержки сигнала, это построить свёртку сигнала.
По идее тогда всё заканчивалось бы поиском индекса максимума и умножение его на шаг дискретизации времени, тогда я бы получал время задержки сигнала.
Но при выполнении этого АКФ данных сигналов получилась в виде трапеции и явный максимум отсутствует (рис.4), при некоторых попытках может выскочить и верный результат, но это не является корректным, на мой взгляд.


Допустил ли я где-то ошибку при моделировании данного процесса, можно ли установить время задержки другим методом?
Пользоваться собственными функциями нельзя, только стандартные блоки симулинка.

Сохранить и скинуть .SLX файл не могу.
0
Миниатюры
Установка времени задержки сигнала   Установка времени задержки сигнала   Установка времени задержки сигнала  

Установка времени задержки сигнала  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.09.2018, 20:37
Ответы с готовыми решениями:

При получении сигнала, как я могу его изменить в определенный момент времени
Доброго времени суток, при получении сигнала, как я могу его изменить в определенный момент...

Моделирование сигнала, шумового процесса, смеси сигнала с шумом
Доброе время суток. Помогите пожалуйста решить данное задание в MatLab. На двух вложениях одно...

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

Создание матрицы задержки
Добрый день. Имеется матрица и функция, генерирующая нормальное распределение. Как сделать так,...

Компенсация задержки фазы
Есть генератор синуса и устройство создающее неизвестную задержку и затухание. Требуется на входе...

4
АлександрКом
212 / 175 / 80
Регистрация: 21.10.2012
Сообщений: 860
07.09.2018, 13:28 2
Лучший ответ Сообщение было отмечено Constanti как решение

Решение

Цитата Сообщение от Constanti Посмотреть сообщение
Допустил ли я где-то ошибку при моделировании данного процесса
Вам нужно пересчитать значение индекса, плучаемое на выходе блока Maximum, с учетом размера буфера накопления. Модель прикрепил.
0
Вложения
Тип файла: zip ConstantiSim.zip (14.9 Кб, 2 просмотров)
Constanti
0 / 0 / 0
Регистрация: 23.04.2017
Сообщений: 25
08.09.2018, 20:00  [ТС] 3
Цитата Сообщение от АлександрКом Посмотреть сообщение
Модель прикрепил.
Тогда я не совсем понимаю принцип работы Вашей схемы. А точнее блока определения максимума.
Если увеличить изображение "пиков" акф, то видно что они одинаковой амплитуды, каким образом определяется нужный?
Или он находит значение первого максимума и после добавления буфера накопления получается нужное время задержки?
Если так, то я сомневаюсь, что после добавления шума данная модель продолжит работать.
0
АлександрКом
212 / 175 / 80
Регистрация: 21.10.2012
Сообщений: 860
10.09.2018, 11:04 4
Цитата Сообщение от Constanti Посмотреть сообщение
Если увеличить изображение "пиков" акф, то видно что они одинаковой амплитуды, каким образом определяется нужный?
Или он находит значение первого максимума
Вам как раз и нужен первый максимум из "серии максимумов ~одинаковой амплитуды".
Цитата Сообщение от Constanti Посмотреть сообщение
Если так, то я сомневаюсь, что после добавления шума данная модель продолжит работать.
Зависит, наверное, от величины шума. Если посмотреть на ваше изображение задержанного/зашумленного сигнала, то видно, что сигнал не очень-то и зашумился. В этом случае, скорее всего, всё определится правильно. И если у вас не доступа к закрытому блоку и вы, получается, работаете с неизменным уровнем шумов, то, может быть, всё и получится.
1
Constanti
0 / 0 / 0
Регистрация: 23.04.2017
Сообщений: 25
10.09.2018, 18:07  [ТС] 5
Спасибо за помощь!

Вернусь снова в данную тему, может кому-то потребуется данная реализация процесса.

Для того чтобы определить время задержки сигнала на приёмнике были сделаны следующие манипуляции:
1)Обнуление первых временных отсчётов сигнала.
Необходимо для того чтобы не учитывать в модели переходный процесс АЦП. Это одна из особенностей блока Sine Wave. Делается следующим образом: создаётся вектор данных равный количеству отсчётов, первые несколько отсчетов приравниваются к 0, остальные 1. С помощью блока Constante, в значении которого написать [0 0 0 ones(1,1021)]. (если количество отсчётов 1024). Дальше необходимо домножить буфер на данный вектор и мы получаем наши "чистые" данные, для анализа. Рисунки 1, 2.

2) Вычисление среднего шума.
Так же создаётся вектор с помощью константы из 512 единиц и 512 нулей, [ones(1,512) zeros(1,512)], перемножается с сигналом и получается чистый шум, для вычисления среднего рисунок 3. И сигнал и шум я взял по модулю, чтобы упросить процесс сравнения, для моей модуляции это не критично.
Дальше с помощью блока Mean вычислил среднее значение. В данном случае можно сказать, что среднее значение получено некорректно, так как 512 отсчётов присвоено значение 0, но при расчёте среднего всё равно учитывается, согласен, но так как шум получился слишком мал по амплитуде, его всё равно приходится умножать на коэффициент, что компенсирует нулевые значения.

3) Сравнение и определение времени задержки сигнала.
С помощью блока Relational Operator получил вектор из логических нулей и единиц. Что поставило в тупик дальнейшие вычисления. Но выход был найден. Данный вектор имеет тип данных Boolean, симулинк дальше не позволяет получать из него каких-то других типов данных после использования функции, но если домножить этот вектор на вектор 1,2,3..1024, то он уже имеет тип double и мы можем получить минимум.
Добавив блок MATLAB Function и вписав в него следующее:

Matlab M
1
2
3
4
function indOut  = fcn(u1)
indOut = u1+1000;
[ind a] = find(u1>10);
indOut(1:numel(ind)) = ind;
После подачи всего этого на блок поиска минимума min, получаем заветный индекс порогового значения сигнала, умножим его на шаг дискретизации, который мы выставили в параметрах моделирования и получаем нужное нам время задержки сигнала.

Полная модель схемы для анализа изображена на рисунке 4. Блок Object of Location выполняет задержку сигнала, добавление шума и уменьшение амплитуды.

Немного увеличил схему, чтобы можно было разглядеть связи
0
Миниатюры
Установка времени задержки сигнала   Установка времени задержки сигнала   Установка времени задержки сигнала  

Установка времени задержки сигнала   Установка времени задержки сигнала  
10.09.2018, 18:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2018, 18:07

Открыть файл формата WAV, воспроизвести его и отобразить график амплитуды и времени этого сигнала (файла), а также спектр сигнала
Здравствуйте ! Помогите пожалуйста с программой на Delphi 7. Не могу написать программу которая...

Функция задержки времени
Здравствуйте! Пишу программу на Visual Studio C++, и возник вопрос. Как сделать допустим вывод...

Функции задержки времени
Какие функции задержки времени вы используете? Мои потуги в использовании задержек какието...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru