Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебники 6054.doc
Скачиваний:
4
Добавлен:
01.05.2022
Размер:
421.89 Кб
Скачать

5.2. Задание

  1. Сформировать вектор отсчетов (цифровое представление), для заданного преподавателем аналогового сигнала.

  2. Исследовать зависимость погрешности цифрового представления от шага квантования и частоты дискретизации.

5.3. Порядок выполнения работы

  1. Определить шаг квантования по уровню в абсолютных и относительных единицах в зависимости от разрядности (7-15двоичных разряда) для АЦП с максимальным входным сигналом равным 5.12в.

  2. Получите у преподавателя исследуемую входную функцию и определите необходимый шаг квантования.

  3. Войдите в среду Mathlab, дважды щелкнув на иконке в виде выпуклой поверхности расположенной на рабочем столе машины. При этом откроются два окна: окно переменных, в котором будут отображаться вводимые пользователем переменные и их размерности и рабочее окно, в которое пользователем вводятся команды, выполняемые при нажатии клавиши Enter.

  4. Войдите в окно редактирования. Оно имеет нумерацию строк. Окно редактирования, предназначенное для написания, редактирования и записи программ на диск, вызывается из меню File – New – M-file. Перенос команд из окна редактирования в рабочее окно выполняется копированием.

  5. Сформировать в среде Mathlab вектор отсчетов времени, задав шаг квантования по времени. Составлять программу лучше в окне редактирования и затем копировать ее фрагменты в рабочее окно для выполнения. Для ввода массива данных, изменяющихся с постоянным шагом, нужно напечатать в командном окне команду следующего формата: t=t0:dt:et;, где t0 – начальное значение элементов вектора, dt – шаг изменения элементов вектора, et – значение конечного элемента. Для вывода любой переменной на рабочее поле используется команда disp(x); , где x – выводимая переменная. Проконтролировать правильность формирования вектора можно командой вывода вектора на экран: disp(t).

Например, ввести вектор из 100 элементов с шагом 0.01 и первым элементом равным 0: t=0:0.01:9.99; disp(t);. Убрать переменную можно командой Clear x; ,где x –убираемая переменная. Просмотреть список переменных можно командой Who;.

  1. Эмулируя работу АЦП построить в пакете Mathlab массив данных y содержащий значения отсчетов сигнала. Для этого, используя оператор цикла FOR, сформировать элементы массива. Формат необходимых команд виден из приведенного ниже примера.

for i=1:100 %Заголовок цикла на 100 отсчетов

y(i)=sin(2*pi*0.1*t(i)); %Ввод дискретизированной по времени функции sin(2**0.1*X) %

end; % Конец цикла.

Информация, записанная после символа «%» рассматривается как комментарий. Точка с запятой запрещает вывод полученных данных на дисплей.

  1. Вывести график функции. Для вывода графика функции используется функция plot(x,y,’r’); , где x- вектор аргументов, y – вектор соответствующих значений, r – первая буква цвета графика. Если аргумент не указан (опущен), то в качестве аргумента используется номер отсчета. Для вывода нескольких графиков на одном рисунке используют команду hold on; без аргументов. Массивы данных и аргументов должны иметь одинаковую размерность. Для ввода осей графика используется функция axis([a,b,c,d]); . Аргументы функции axis равны соответственно нижней и верхней границе аргумента выводимой функции, нижнему и верхнему значению самой функции. Если вектор аргументов не указан, то по умолчанию используется вектор номеров отсчетов. Для задания цвета выводимого графика он указывается первой буквой названия цвета, взятой в апострофы. Пример: plot(t,y,’r’);.

  2. Представить на графике массив отсчетов, т.е. дискретизированный по времени сигнал. Для этого используют функцию stem, которая имеет формат аналогичный команде plot. Например: stem(t,y); .

  3. Установить параметры квантователя (по уровню) q командой q=quantizer([n1,n2]);. Параметрами команды являются соответственно – количество двоичных разрядов, отводимых под данные, и количество двоичных разрядов, отводимых под дробную часть числа. Функция range(q) возвращает параметры квантователя. Для просмотра параметров квантователя использовать disp(range(q));.

  4. Провести квантование по уровню полученного ранее вектора отсчетов, записав результат в новый вектор. Для этого используют функцию квантования yy=quantize(q,y1);. Первый аргумент – имя квантователя, второй – имя исходного вектора отсчетов.

  5. Вывести на график квантованные сигналы командой stem и сравнить с сигналами не квантованными по уровню. Для вывода нескольких функций на одном графике используется команда hold on; , после исполнения которой все выводимые позже данные будут размещаться на одном графике. Команда действует только на текущее графическое окно.

  6. Изменяя параметры квантователя и выполняя п. 6-8, получить векторы квантованных сигналов при различных параметрах квантователя. Провести сравнение. Объяснить полученные результаты.

  7. r

    Только для чтения

    w

    Только для записи

    r+ r+

    Чтение и запись

    b

    Бинарный файл

    t

    Текстовый файл

    a

    Добавление в конец файла

    Записать в файлы векторы отсчетов, неквантованный и квантованные при различных параметрах квантователя. Перед началом работы с файлом его нужно открыть специальной функцией fopen: fid=fopen(‘полное имя файла’,’флаг’);. Значения флагов приведены в таблице. Fid – файловая переменная. Для записи цифровых данных во внешний текстовый файл используется команда fprintf , имеющая следующий формат: fprintf(fid,'%4.2f\n',x); , где первый аргумент – файловая переменная, второй – строковый спецификатор формата, третий – выводимая переменная. Спецификатор формата начинается с знака %. Количество и порядок спецификаторов в управляющей строке должно точно соответствовать списку выводимых переменных указанных в качестве параметров вслед за управляющей строкой. Символ f означает, что выводу подлежит вещественное число, преобразованное в строку. Числа перед f указывают число позиций в числе и число позиций, отводимых под дробную часть числа. Символы \n обозначают переход на новую строку. После записи данных файл должен быть закрыт командой fclose. Пример: fid=fopen('a:\ttt.txt','wt'); fprintf(fid,’%f\n’,yy); fclose(fid);. Для записи строки символов используется спецификатор формата %s. Чтение строки из файла производится командой fgets(fid); , где fid – файловая переменная. Чтение вектора данных m из текстового файла производится командой m=fscanf(fid,’%f’); . Чтение n чисел из текстового файла в вектор производится командой m=fscanf(fid,’%f’,n); .
  8. Вычислив среднеквадратичное значение приращения функции на шаге квантования определить требуемый период дискретизации для заданных преподавателем функции и параметров квантователя.

  9. Записать несколько файлов одной функции с разными частотами дискретизации и различными значениями шага квантования по уровню.

  10. Прочитать файлы данных в пакете Mathlab и получить графики полученных функций.

  11. Отчет должен содержать название работы, цель работы, программу, графики исходного и дискретизированного сигналов. Файлы данных представляются на диске или дискете.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]