Форум программистов, компьютерный форум, киберфорум
Наши страницы
Matlab
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
privetkakdela
0 / 0 / 0
Регистрация: 14.06.2014
Сообщений: 12
1

Определение спектра сигнала, сравнительный анализ

14.06.2014, 16:12. Просмотров 3585. Ответов 13
Метки нет (Все метки)

Здравствуйте, дамы и господа!
Необходима Ваша помощь и наставление

Дано1: Потенциальное кодирование,канал тональной частоты H=3100Гц амплитудная модуляция.
Метод NRZ, период сигнала Т=6,67мс, число битов в сигнале k=8.

Найти: -спектр результирующего модулированного сигнала;

Дано2: Потенциальное кодирование, число бит в сигнале k=8, канал тональной частоты Н=3100Гц, амплитудно-фазовая модуляция (QAM):
2 уровня сигнала, 2 значения сдвига фазы, период сигнала Т=13,33 мс.
Найти:сравнить спектры с Дано1.

Мои наработки:
1) Берем некоторую информационную последовательность: 10011011. Дальше, по идее, мне нужно нарисовать этот сигнал и пропустить его через fft, но мои попытки в Simulink`е не увенчались успехом. Дальше я прикинул, а почему бы не прогнать эту информационную последовательность сразу через fft? Сказано - сделано. Только немного видоизменив изначальный сигнал: fft([11111111000000001111111111111111000000001111111111111111]) т.к. где-то слышал, про то, что чтобы функция fft правильно работала ей необходимо от 64 отсчетов. Получив некоторый результат я и остановился. Т.к. если первый шаг был сделан неверно, то остальные не имеют смысла

А теперь вопрос: правильно ли я начал размышлять? Что бы вы посоветовали дальше сделать? Если возможно, покажите, пожалуйста, пример, как можно нарисовать необходимый мне сигнал с помощью Simulink и какая нужна схема для просчета спектра сигнала. Если первый сигнал можно тупо прогнать через fft, то другой, все же, наверное, нужно нарисовать. Не?
Готов поразмышлять вместе с вами и впитать нужную информацию
Спасибо большое!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2014, 16:12
Ответы с готовыми решениями:

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

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

Фильтрация сигнала и получение спектра
Здравствуйте! Имеются экспериментальные данные - результаты измерения вибраций на раме грузового...

Практическая ширина спектра сигнала. Матлаб
Какое минимальное количество гармоник от начала спектра нужно оставить (все остальные гармоники при...

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

13
Dimas_rdn
41 / 41 / 9
Регистрация: 22.10.2012
Сообщений: 91
14.06.2014, 19:30 2
Неправильно. Я бы посоветовал почитать про модуляцию. Тебе нужно спектр модулирОВАННОго сигнала, а ты пытаешься найти спектр информационного (модулирУЮЩЕго) сигнала. Тебе нужна несущая с частотой 3.1 кГц, частота дискретизации в каналах ТЧ берется равной 8 кГц. И уже ее промодулировать твоей NRZ-последовательностью.
1
privetkakdela
0 / 0 / 0
Регистрация: 14.06.2014
Сообщений: 12
14.06.2014, 21:55  [ТС] 3
Так, вот мои кое какие попытки. Туда ли я двигаюсь? (как оказалось функцию dmod убрали ).
Правильно ли я понимаю, что уже с s_ask я и начинаю танцевать под БПФ, чтобы определить спектр?

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function modulation
%inf - информационная последовательность [1 0 1 1 1 0 0 1]
inf = [1 0 1 1 1 0 0 1];
M = 2; %уровни модуляции
Fc = 3100; %несущая честота в Гц
Fs = 8000; %частота дискретизации в Гц
Fd = 1204; %частоты дискретизации в Гц для сигнала X (входного/информационного) 
%(1/Fd = T (период следования символов из сигнала X))
 
%[s_ask, t] = dmod(inf, Fc, Fd, Fs, 'ask', M);
%plot(t, s_ask)
%grid on
 
[s_ask] = ammod(inf, Fc, Fs);
%как изобразить адекватно этот сигнал?
greed on
 
%здесь будет вычисление спектра
 
end
0
Dimas_rdn
41 / 41 / 9
Регистрация: 22.10.2012
Сообщений: 91
14.06.2014, 23:03 4
privetkakdela, речь шла про симулинк, а уже не симулинк ))) Изобразить адекватно сигнал s_ask не получится, поскольку в нем всего 8 элементов. Его частота дискретизации далеко не 8000 Гц.
Частота дискретизации показывает, сколько раз в секунду берутся отсчеты сигнала. Допустим, какой-либо процесс моделируется в течение 1 секунды. Если массив длиной в 8, то частота дискретизации 8 Гц (8 отсчетов в секунду). Массив из тысячи элементов - частота дискретизации 1 кГц.
Отсюда вывод - нам нужно размножить отсчеты настолько, насколько требует этого частота дискретизации. Данная строчка каждый элемент массива inf по очереди повторяет по тысяче раз по столбцам, а потом перестраивает все в одну строку.
Matlab M
1
inf_m = reshape(repmat(inf,1000,1),1,8000);
Вот код, который я набросал днем на интерес. Только я не совсем разобрался, что там имеется в виду под периодом сигнала и к чему это относится, поэтому в коде 6,67 мс это длительность одного бита в NRZ. Амплитудная модуляция реализована простым перемножением, что по сути и есть принцип АМ.
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
26
27
f = 3100;
fs = 8000;
k = 8;
T = 6.67e-3;
L = T*k;
t = 0:1/fs:L;
data = randi(2,1,k)-1;
g = floor(length(t)/k)
data_m = reshape(repmat(data,g,1),1,g*8);
s = cos(2*pi*f*t);
s_m = s(1:length(data_m)).*data_m;
figure
plot(t,s)
title('Несущая')
figure
subplot(2,1,1)
plot(t(1:length(data_m)),data_m)
title('NRZ-сигнал')
subplot(2,1,2)
plot(t(1:length(data_m)),s_m)
title('Модулированный сигнал')
figure
pwelch(s,[],[],[],fs)
title('Спектр несущей')
figure
pwelch(s_m,[],[],[],fs)
title('Спектр модулированного сигнала')
1
privetkakdela
0 / 0 / 0
Регистрация: 14.06.2014
Сообщений: 12
15.06.2014, 12:13  [ТС] 5
Так, с кодом и амплитудной модуляцией разобрался. Усвоил, что это есмь банальное умножение нашей двоичной последовательности (информационной) на несущую. Несколько вопросов, если позволите :
1) Что измениться, если мы поменяем метод NRZ на NRZI или Манчестерский?
2) Почему cos как несущая? Почему не sin? Или это ограничивается лишь нашим предпочтением?)

По поводу Дано2.
1) В данном методе (QAM) мы имеем 2 несущие, которые сдвинуты по фазе (насколько сдвинуты? на 90?). А как быть с амплитудами? Или мы имеем 4 несущие? Типа 1ая амплитуда/1ая фаза, 2ая амплитуда/1ая фаза, 1ая амплитуда/2ая фаза, 2ая амплитуда/2ая фаза?
2) А потом мы это все перемножаем с нашим модулирующим сигналом? (он обязательно двоичный?)

Прошу прощения, если вопросы покажутся глупыми
0
Dimas_rdn
41 / 41 / 9
Регистрация: 22.10.2012
Сообщений: 91
15.06.2014, 13:40 6
1) Изменится только то, что нужно будет закодировать в соответствии с принципом кода а потом уже полученное садить на несущую
2) По идее по барабану, разница только в начальной фазе несущей

1) Стоит посмотреть схему QAM-модулятора. Две несущие, как правило, берутся от одного генератора, для одной несущей ставится фазовращатель на 90. В результате имеем две несущих, косинусоида и синусоида, что можно рассматривать на 2 фазовых сдвига (0 и 90). Каждая из них модулируется амплитудой, в нашем случае 1 или 0. В результате имеем 4 комбинации.
В реальности при QAM-4 битовая последовательность разбивается на четные и нечетные биты и они параллельно модулируют несущие: четный бит на синусоиду, нечетный на косинусоиду или наоборот. После промодулированные несущие складываются.
2) В действительности нули и единицы на перемножение не подаются. Цифровой сигнал преобразуется в аналоговый (АЦП), фильтруется ФНЧ и уже потом перемножается с несущей. Если пошарить по интернету схему QAM-модулятора, то можно встретить схемы как с АЦП и ФНЧ, так и упрощенные схемы без этих блоков.
1
privetkakdela
0 / 0 / 0
Регистрация: 14.06.2014
Сообщений: 12
16.06.2014, 15:58  [ТС] 7
1) А зачем нужны здесь блоки АЦП и ФНЧ? В каком месте они появляются (пункты см. ниже) и каков их физический смысл?

Так, вот в чем я попытался разобраться:
а) На вход схемы у нас поступает двоичная последовательность.
б) Она делится на 2 одинаковые части.
в) Далее, одна часть модулируется (амплитудная модуляция) несущей cos, а вторая sin.
г) Потом мы складываем.
д) PROFIT

И уже от этого чуда мы ищем спектр.

Взято отсюда: http://en.wikipedia.org/wiki/Quadrat...on#Transmitter
Там же схема (Transmitter)

Я правильно понял?

Добавлено через 13 минут
Так. В итоге я просто перефразировал Dimas_rdn
Спасибо большое!

Но остался непонятен физический смысл блоков ФНЧ и АЦП, если же можно и без них.

Попробую это все закодить.

Как складывать сигналы в Matlab?
0
Dimas_rdn
41 / 41 / 9
Регистрация: 22.10.2012
Сообщений: 91
16.06.2014, 22:38 8
privetkakdela, а я уже и не помню, нафига ЦАП. Видимо, не положено цифру гнать на модулятор. А ФНЧ нужен, чтобы гармоники лишние удалять. Для моделирирования можно и без них, в этом уже убедились и мы, и до нас )))
Что ты подразумеваешь под одинаковостью частей?
Складывать обычной операцией сложения, как ни странно.
1
R2D2
902 / 810 / 113
Регистрация: 23.11.2012
Сообщений: 2,400
16.06.2014, 22:47 9
privetkakdela, не хочу прерывать Ваш полет фантазии, но все же скажу: тут на форуме советуют (в т.ч. и я) книгу А. Б. Сергиенко "Цифровая обработка сигналов". Там специально для Вас в разделе "Модуляция" есть примеры и АМ и КАМ (QAM). И даже без всяких там команд тулбоксов. Просто, понятно и подкреплено теорией. Очень советую.
1
privetkakdela
0 / 0 / 0
Регистрация: 14.06.2014
Сообщений: 12
19.06.2014, 02:18  [ТС] 10
Доброго времени суток!

R2D2
Спасибо большое за книгу! Действительно очень и очень дельная.

Dimas_rdn
Я подразумеваю то, что на вход у нас поступает массив и мы его делим на 2 части (четные - нечетные элементы).

---------------

Такие вопросики:

Пытаюсь реализовать цикл, но чето не получается
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function test
data = [1 0 1 0 1 1 1];
data_m1 = [];
data_m2 = [];
j1 = 1;
j2 = 1;
 
for i = 1:length(data)
    if i%2=0
data_m1[j1] = data[i] ;
j1 = j1 + 1;
    else data_m2[j2] = data[i];
        j2 = j2 + 1;
    end
end
disp(data_m1)
disp(data_m2)
 
end
Другой вопросик: как выводится амплитудный и частотный спектр сигнала?
Как я понял, функция pwelch выводит спектр мощности, а хочется рассмотреть сигнал со всех сторон
0
R2D2
902 / 810 / 113
Регистрация: 23.11.2012
Сообщений: 2,400
19.06.2014, 12:38 11
Цитата Сообщение от privetkakdela Посмотреть сообщение
if i%2=0
Матлаб похож на СИ, но не на столько)))
if mod(i,2)
И обращение к элементу массива не в квадратных кавычках, а в круглых.
1
polly
35 / 35 / 0
Регистрация: 12.05.2012
Сообщений: 26
19.06.2014, 13:49 12
По поводу спектра: считайте по-честному - через преобразование Фурье (fft). И будет вам и амплитудный спектр, и фазовый.
2
privetkakdela
0 / 0 / 0
Регистрация: 14.06.2014
Сообщений: 12
23.06.2014, 00:30  [ТС] 13
Жду ваших суровых комментариев, а также советов
Спасибо огроменное Dimas_rdn за, практически, весь код )

Программа, моделирующая Дано1
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
26
27
28
29
30
31
32
33
34
35
36
37
38
function modulation(data)
f = 3100; %канал тональной частоты H=3100Гц
fs = 8000; %частоты дискретизации
k = 8; %кол-во бит в сигнале
T = 6.67e-3; %период сигнала
L = T*k;
t = 0:1/fs:L;
%data = randi(2,1,k)-1;
%data = [1 0 1 0 0 1 1 1];
 
g = floor(length(t)/k)
data_m = reshape(repmat(data,g,1),1,g*8);
s = cos(2*pi*f*t); %несущая
s_m = s(1:length(data_m)).*data_m; %модулированный сигнал
 
%выводим всевозможную информацию о сигнале
figure
plot(t,s)
title('Несущая')
 
figure
subplot(2,1,1)
plot(t(1:length(data_m)),data_m)
title('NRZ-сигнал')
subplot(2,1,2)
plot(t(1:length(data_m)),s_m)
title('Модулированный сигнал')
 
figure
pwelch(s,[],[],[],fs)
title('Спектр несущей')
 
figure
pwelch(s_m,[],[],[],fs)
title('Спектр модулированного сигнала')
 
 
end
Программа моделирующая Дано2
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
function qammodulation( data )
f = 3100;
fs = 8000;
k = 8;
T = 6.67e-3;
L = T*k;
t = 0:1/fs:L;
 
%data = randi(2,1,k)-1;
%data = [1 0 1 0 0 1 1 1];
[data1, data2] = test(data);
g = floor(length(t)/k);
data_m1 = reshape(repmat(data1,g,1),1,g*4);
data_m2 = reshape(repmat(data2,g,1),1,g*4);
 
s1 = cos(2*pi*f*t);
s_m1 = s1(1:length(data_m1)).*data_m1;
s2 = -sin(2*pi*f*t);
s_m2 = s2(1:length(data_m2)).*data_m2;
s_m = s_m1 + s_m2;
 
figure
plot(t,s1)
title('Первая несущая (cos)')
 
figure
plot(t,s2)
title('Вторая несущая (sin)')
 
figure
subplot(2,1,1)
plot(t(1:length(data_m2)),s_m2)
title('Модулированный сигнал (sin)')
%plot(t(1:length(data_m)),data_m)
%title('NRZ-сигнал')
subplot(2,1,2)
plot(t(1:length(data_m1)),s_m1)
title('Модулированный сигнал (cos)')
 
figure
pwelch(s1,[],[],[],fs)
title('Спектр несущей (cos)')
 
figure
pwelch(s2,[],[],[],fs)
title('Спектр несущей (sin)')
 
figure
pwelch(s_m,[],[],[],fs)
title('Спектр модулированного сигнала')
 
 
 
 
end
Функция test
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function [data_m1, data_m2] = test(data)
%data = [1 0 1 0 1 1 1 1];
data_m1 = [];
data_m2 = [];
j1 = 1;
j2 = 1;
 
for i = 1:length(data)
    if mod(i,2)
data_m1(j1) = data(i) ;
j1 = j1 + 1;
    else data_m2(j2) = data(i);
        j2 = j2 + 1;
    end
end
%disp(data_m1)
%disp(data_m2)
 
end
Сейчас разбираюсь со спектрами. Если у кого есть ссылки на какие-нибудь статейки интересные и полезные по данной тематике и задаче (спектральный анализ), то буду очень и очень благодарен.
Пошел разбираться с функцией fft()..
0
Matlab4ik
0 / 0 / 0
Регистрация: 21.05.2017
Сообщений: 2
21.05.2017, 22:20 14
Privetkakdela?? у нас похожие немного работы, напиши мне как зайдешь сюда
0
21.05.2017, 22:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2017, 22:20

Перенос спектра дискретизированного сигнала в matlab
Решил что лучше спросить в этом разделе. Есть отсчеты звукового сигнала и частота дискретизации...

Анализ спектра мощности временного ряда
Доброго времени суток, форумчане! Я не профи матлаба, но у меня курсовая связанная с анализом...

Определение переднего фронта спектра
ребята , кто -нибудь занимался выделением переднего фронта спектра?


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

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

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