Этот пример показов, как оценить высокий и низкий уровни состояния для цифровых тактовых данных. В отличие от аналоговых сигналов напряжения, сигналы в цифровых схемах имеют только два состояния: HIGH и LOW. Информация передается шаблоном высоких и низких уровней состояния.
Загрузка clockex.mat
в рабочую область MATLAB ®. clockex.mat
содержит цифровую форму синхроимпульса 2,3 В, дискретизированную в 4 мегагерц. Загрузите данные синхроимпульса в переменную x
и вектор времени дискретизации в переменной t
. Постройте график данных.
load('clockex.mat','x','t') stem(t,x,'filled')
Определите высокий и низкий уровни состояния для данных синхроимпульса используя statelevels
.
levels = statelevels(x)
levels = 1×2
0.0027 2.3068
Это ожидаемый результат для данных синхроимпульса 2,3 В, где уровень невысокого состояния без шума составляет 0 В, а уровень высокого состояния без шума - 2,3 В.
Используйте предполагаемые уровни состояния, чтобы преобразовать напряжения в последовательность нулей и таковых. Последовательность нулей и таковых является двоичным представлением двух состояний. Для выполнения присвоения используйте следующее правило принятия решений:
Присвойте любому напряжению в области 3% -допуски уровня низкого состояния значение 0.
Присвойте любому напряжению в области 3% -допуски высокого уровня значение 1.
Определите ширины областей 3% -допуски вокруг уровней низкого и высокого состояния.
tolwd = 3/100*diff(levels);
Используйте логическую индексацию, чтобы определить напряжения в области 3% -допуски низкого уровня и напряжения в области 3% -допуски высокого уровня. Присвойте значение 0 напряжениям в области допуска низкого уровня и 1 напряжениям в области допуска высокого уровня. Постройте график результата.
y = zeros(size(x)); y(abs(x-min(levels))<=tolwd) = 0; y(abs(x-max(levels))<=tolwd) = 1; subplot(2,1,1) stem(t,x,'filled') ylabel('Volts') subplot(2,1,2) stem(t,y,'filled') ylabel('\{0,1\}')
Правило принятия решения присвоило все напряжения правильному состоянию.