MATLAB.Exponenta
MATLAB и Simulink на русском
Технологии разработки и отладки
		сложных технических систем
 

Обработка сигналов и изображений\Communications Toolbox

Список функций CommunicationsToolbox: Функции анализа сигналов

  В оглавление \ К следующему разделу \ К предыдущему разделу

EYEDIAGRAM
Вывод глазковой диаграммы

Синтаксис:

eyediagram(x,n);
eyediagram(x,n,period);
eyediagram(x,n,period,offset);
eyediagram(x,n,period,offset,plotstring);
eyediagram(x,n,period,offset,plotstring,h);
h = eyediagram(...);

Описание:

eyediagram(x,n)

Вывод глазковой диаграммы для сигнала x с “длительностью горизонтальной развертки”, равной n отсчетам. Параметр n должен быть целым числом, большим единицы. Крайние значения горизонтальной оси считаются равными –1/2 и 1/2. Функция предполагает, что целочисленным значениям времени соответствуют первый отсчет сигнала и следующие за ним с шагом n. Интерпретация массива x и число выводимых диаграмм зависят от размера массива и наличия у него мнимой части:

  • если x — вещественная двухстолбцовая матрица, функция eyediagram интерпретирует первый столбец как синфазную, а второй — как квадратурную составляющую. Диаграммы для двух составляющих выводятся в отдельных осях в общем графическом окне;
  • если x — комплексный вектор, функция eyediagram интерпретирует его вещественную часть как синфазную, а мнимую — как квадратурную составляющую. Диаграммы для двух составляющих выводятся в отдельных осях в общем графическом окне;
  • если x — вещественный вектор, функция eyediagram интерпретирует его как вещественный сигнал. Графическое окно в данном случае содержит единственную диаграмму.

eyediagram(x,n,period)

То же, что и предыдущий вариант синтаксиса, но крайние значения горизонтальной оси считаются равными -period/2 и period/2.

eyediagram(x,n,period,offset)

То же, что и предыдущий вариант синтаксиса, но функция предполагает, что значениям времени, кратным длительности символьного такта period, соответствуют (offset+1)-й отсчет сигнала и следующие за ним с шагом n. Значение параметра offset должно быть неотрицательным целым числом, лежащим в диапазоне от 0 до n-1.

eyediagram(x,n,period,offset,plotstring)

То же, что и предыдущий вариант синтаксиса, но параметр plotstring задает символы точек, тип линии и цвет для графика. Параметр plotstring — это строка, формат и назначение элементов которой те же самые, что и в функции plot.

eyediagram(x,n,period,offset,plotstring,h)

То же, что и предыдущий вариант синтаксиса, но вместо создания нового графического окна график создается в существующем окне с дескриптором h. Параметр h должен быть дескриптором графического окна, ранее созданного функцией eyediagram.

Внимание! Для вывода нескольких сигналов в одном окне нельзя использовать команду hold on.

h = eyediagram(...)

То же, что предыдущие варианты синтаксиса, с возвратом дескриптора окна, содержащего график, в выходном параметре h.

Примеры.

Приведенный ниже код иллюстрирует использование глазковой диаграммы для поиска оптимальных точек взятия отсчетов. Случайный цифровой сигнал сначала преобразуется в точки 16-точечного квадратурного созвездия, затем в сигнал вносятся искажения с помощью фильтра с косинусоидальным сглаживанием АЧХ. Несколько команд выделяют из фильтрованного сигнала фрагмент, соответствующий установившемуся состоянию. Наконец, для результирующего сигнала выводится глазковая диаграмма.

% Задаем число точек созвездия, а также две частоты дискретизации
M = 16; Fd = 1; Fs = 10;
% Число отсчетов сигнала
Pd = 100;
% Случайные целые числа в диапазоне [0,M-1]
msg_d = randint(Pd,1,M);
% Преобразование целых чисел в параметры квадратурной модуляции
msg_a = modmap(msg_d,Fd,Fd,'qask',M);
% Пусть канал связи описывается фильтром
% с косинусоидальным сглаживанием АЧХ
delay = 3; % вносимая фильтром задержка (в символах)
rcv = rcosflt(msg_a,Fd,Fs,'fir/normal',.5,delay);
% Обрезаем переходные процессы (начало и конец
% выходного сигнала фильтра)
propdelay = delay .* Fs/Fd + 1; % задержка (в отсчетах)
rcv1 = rcv(propdelay:end-(propdelay-1),:); % усеченный сигнал
N = Fs/Fd;
% Выводим глазковую диаграмму, не сдвигая моменты взятия отсчетов
offset1 = 0;
h1 = eyediagram(rcv1,N,1/Fd,offset1);
set(h1,'Name','Eye Diagram Displayed with No Offset');

Обратите внимание на то, что вертикальная линия, проведенная в центре диаграммы, пересечет “глаз” в месте его максимального “раскрытия” (левый рисунок).

На рисунке, приведенном справа, упомянутая вертикальная линия окажется в стороне от места максимального “раскрытия” “глаза”. Этот рисунок получен с помощью следующих команд:

offset2 = 2;
h2 = eyediagram(rcv1,N,1/Fd,offset2,'r-');
set(h2,'Name','Eye Diagram Displayed with Offset of Two');

Продолжим пример, использовав информацию, полученную с помощью глазковой диаграммы, для сдвига точек взятия отсчетов в функции demodmap. (Обратите внимание на то, что в функцию demodmap передается значение сдвига, равное offset1+1, поскольку функции eyediagram и demodmap трактуют величину сдвига по-разному.)

% Продолжаем, используя информацию о сдвиге для декодирования
% цифрового квадратурного сигнала
newmsg1 = demodmap(rcv1,[Fd offset1+1],Fs,'qask',16);
s1 = symerr(msg_d,newmsg1) % Число искаженных символов
s1 =

0

Как видите, ошибки приема отсутствуют. Если же использовать значение сдвига, равное offset2, это приведет к появлению искажений в декодированном цифровом сигнале. Полученное вами число ошибок в данном примере может несколько отличаться от приведенного, поскольку обрабатываемое сообщение msg_d состоит из случайных чисел.

newmsg2 = demodmap(rcv1,[Fd offset2+1],Fs,'qask',16);
s2 = symerr(msg_d,newmsg2)
s2 =

8

Использование глазковых диаграмм иллюстрируется демонстрационной программой scattereyedemo.

Сопутствующие функции: scatterplot, plot.

  В оглавление \ К следующему разделу \ К предыдущему разделу

 

Поиск по сайту:

Система Orphus

Яндекс.Метрика