Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 14.12.2019
Сообщений: 4

Детектирование фазы сигнала

02.03.2020, 22:28. Показов 4004. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Учусь работать в Matlab и решил сделать фазовый детектор, пока для простых сигналов.
Использую преобразование фурье, т.е фаза это arctg(Im/Re). Собственно, возникло 2 вопроса:
1) Знаю особенность atan в Matlab - работают с углами (-180;180), а мне надо (0;360). Додумался до того, что нужно наблюдать за знаком мнимой части, т.е. если мнимая с отрицательным знаком, то надо прибавить https://www.cyberforum.ru/cgi-bin/latex.cgi?\pi. Для этого надо сделать цикл. Но подскажите, как его правильно задать? Из скриншота видно, что фигню накодил.
2) Правильно ли я понял, чтобы получить начальную фазу https://www.cyberforum.ru/cgi-bin/latex.cgi?{30}^{o }, мне надо ввести "время опроса" Tcheck, чтобы бралось из массива первое значение? Или как это правильно сделать?
 Комментарий модератора 
Правила форума 4.11. Картинки и любые другие файлы загружайте на форум, во избежание их удаления или потери на сторонних ресурсах. По этой же причине коды программ также должны находиться на форуме.
Миниатюры
Детектирование фазы сигнала  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.03.2020, 22:28
Ответы с готовыми решениями:

Оценка фазы сигнала
помогите оценить фазу сигнала S(t)=S0cos(ω0τз + (2Δωτзt)/T_мн + φ) Вот какие то наработки, но это не то. clc clear all ...

Детектирование сигнала при ускорении
Добрый день. Очень интересуют способы решения одной проблемы. Имеется приемник спутниковых сигналов, этот приемник установлен на объекте,...

Детектирование сигнала с относительной фазовой манипуляцией
Имеются 4 сигнала c относительной фазовой манипуляцией (модуляцией). Частота несущей 1,5 кГц. Необходимо детектировать сигналы, т.е. точно...

5
574 / 363 / 186
Регистрация: 11.01.2019
Сообщений: 1,220
03.03.2020, 09:04
Archiputs, а что делать с вашей картинкой?
0
1 / 1 / 0
Регистрация: 14.12.2019
Сообщений: 4
03.03.2020, 09:21  [ТС]
Цитата Сообщение от tokrab Посмотреть сообщение
Archiputs, а что делать с вашей картинкой?
Извиняюсь, забыл.
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Freq = 1000; %Частота сигнала
fd = 20*Freq; %Частота дискретизации
FreqDG = abs(Freq-fd); %4509
Time = 0.01; %Частота опроса сигнала
Tcheck = 1 ; %Время опроса
phi = pi/6; %Фаза сигнала РАНДОМНАЯ (убрать 0, чтобы работала)
phideg = phi*(360/(2*pi)); %Фаза сигнала в градусах
td = 1/fd; %Интервал дискретизации
t = 0:td:Time-td; %Время сигнала
f = 0:1:fd-1; %Частотный интервал
S = cos(2*pi*Freq*t+phi); %Формула задания сигнала
y = fft(S);
SI = imag(y); %Мнимая часть
SR = real(y); %Реальная часть
if (SI(Tcheck) < 0)
   (SI(Tcheck) + pi)
end;
SPcheck = atan2(SR(Tcheck),SI(Tcheck)); %Определение фазы
SPcheckdeg = SPcheck*(360/(2*pi)) %Определение фазы в градусах
0
Эксперт по математике/физике
 Аватар для SSC
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
03.03.2020, 10:13
Цитата Сообщение от Archiputs Посмотреть сообщение
работают с углами (-180;180), а мне надо (0;360). Додумался до того, что нужно наблюдать за знаком мнимой части
Кто Вас научил пи к мнимой части прибавлять? Что за бред?
Ну получился у Вас угол отрицательный, так и прибавьте к нему 360 уж если у Вас такая нелюбовь к отрицательным числам
После 12 строки
Matlab M
1
2
an=angle(y)
an_g=(360/(2*pi))*(an+(an<0)*2*pi) %Определение фазы в градусах
0
1298 / 927 / 449
Регистрация: 21.10.2012
Сообщений: 2,604
03.03.2020, 10:19
Archiputs, видимо, так:
Кликните здесь для просмотра всего текста
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
clear;
clc;
 
Freq = 1000; %Частота сигнала
fd = 20*Freq; %Частота дискретизации
FreqDG = abs(Freq-fd); %4509
Time = 0.01; %Частота опроса сигнала
Tcheck = 1 ; %Время опроса
phi = pi/8; %Фаза сигнала РАНДОМНАЯ (убрать 0, чтобы работала)
phideg = phi*(360/(2*pi)); %Фаза сигнала в градусах
td = 1/fd; %Интервал дискретизации
t = 0:td:Time-td; %Время сигнала
f = 0:1:fd-1; %Частотный интервал
S = cos(2*pi*Freq*t+phi); %Формула задания сигнала
 
n = length(S);
FFTsig = fft(S, n);
F = 0: fd/n : fd/2 - fd/n;
[~, num] = min(abs(F - Freq));
 
SI = imag(FFTsig(num)); %Мнимая часть
SR = real(FFTsig(num)); %Реальная часть
 
SPcheck = atan2(SI, SR); %Определение фазы
SPcheckdeg = SPcheck*(360/(2*pi)); %Определение фазы в градусах
2
1 / 1 / 0
Регистрация: 14.12.2019
Сообщений: 4
03.03.2020, 10:40  [ТС]
АлександрКом, спасибо!
SSC, опирался на комплексную плоскость. Хотел, чтобы ответ всегда был в 1й или 2й четверти.
Миниатюры
Детектирование фазы сигнала  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.03.2020, 10:40
Помогаю со студенческими работами здесь

Изменение фазы сигнала с использоваением БПФ
Доброго времени суток. Укажите, пожалуста, на ошибку... Нужно повернуть фазу аудиофайла с помощью FFT на 45 градусов ( PI / 4 ) ...

Алгоритм детектирования смены фазы сигнала
Есть сигнал с ФРМ(фазоразностной) модуляцией поступающий ко мне в виде массива PCM-отсчетов - буфера Нужен алгоритм: Обнаружения...

БПФ бинарного сигнала, поиск частоты и фазы
Вляпался по неосторожности в ЦОС, совсем не мою область. Есть светодиод. Он мигает с частотой около 200 Гц. Есть бинарный вектор....

Математически найти спектр амплитуды и фазы дискретного сигнала
Нужно математически найти спектр амплитуды и фазы дискретного сигнала , и восстановить исходный постоянный сигнал. Как это можно сделать?...

Детектирование ASK
Здравствуйте! Подскажите пожалуйста как определить пороговое напряжение для детектирования сигнала после амплитудной манипуляции.


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru