Как сделать сигнал в матлаб

Обновлено: 03.07.2024

И.В.Черных. "Simulink: Инструмент моделирования динамических систем"

9. Библиотека блоков Simulink

9.1. Sources - источники сигналов

9.1.1. Источник постоянного сигнала Constant

Назначение:
Задает постоянный по уровню сигнал.

Параметры:
1. Constant value - Постоянная величина.
2. Interpret vector parameters as 1-D – Интерпретировать вектор параметров как одномерный (при установленном флажке). Данный параметр встречается у большинства блоков библиотеки Simulink. В дальнейшем он рассматриваться не будет.

Значение константы может быть действительным или комплексным числом, вычисляемым выражением, вектором или матрицей.

Рис. 9.1.1 иллюстрирует применение этого источника и измерение его выходного сигнала с помощью цифрового индикатора Display.

Рис. 9.1.1. Источник постоянного воздействия Constant

9.1.2. Источник синусоидального сигнала Sine Wave

Назначение:
Формирует синусоидальный сигнал с заданной частотой, амплитудой, фазой и смещением.

  • Time-based – По текущему времени.
  • Sample-based – По величине шага модельного времени.

9.1.2.1. Формирование выходного сигнала по текущему значению времени для непрерывных систем

Выходной сигнал источника в этом режиме соответствует выражению:

    Amplitude - Амплитуда.
  1. Bias – Постоянная составляющая сигнала.
  2. Frequency (rads/sec) - Частота (рад/с).
  3. Phase (rads) - Начальная фаза (рад).
  4. Sample time – Шаг модельного времени. Используется для согласования работы источника и других компонентов модели во времени. Параметр может принимать следующие значения:
    0 (по умолчанию) – Используется при моделировании непрерывных систем.
    > 0 (положительное значение) – Задается при моделировании дискретных систем. В этом случае шаг модельного времени можно интерпретировать как шаг квантования по времени выходного сигнала.
    -1 – Шаг модельного времени устанавливается таким же, как и в предшествующем блоке, т.е. блоке, откуда приходит сигнал в данный блок.
    Этот параметр может задаваться для большинства блоков библиотеки Simulink. В дальнейшем он рассматриваться не будет.

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

9.1.2.2. Формирование выходного сигнала по текущему значению времени для дискретных систем

Алгоритм определения значения выходного сигнала источника для каждого последующего шага расчета определяется выражением (в матричной форме):

где D t – постоянная величина, равная значению Sample time.

В данном режиме ошибка округления для больших значений времени также уменьшает точность расчета.

9.1.2.3. Формирование выходного сигнала по величине модельного времени и количеству расчетных шагов на один период

Выходной сигнал источника в этом режиме соответствует выражению:

y= Amplitude* sin[(k + Number of offset samples) / Samples per period] + bias ,

где k – номер текущего шага расчета.

В данном режиме ошибка округления не накапливается, поскольку Simulink начинает отсчет номера текущего шага с нуля для каждого периода.

На Рис. 9.1.2 показано применение блока с разными значениями шага модельного времени (Sample time = 0 для блока Sine Wave 1и Sample time = 0.1 для блока Sine Wave 2). Для отображения графиков выходных сигналов в модели использован виртуальный осциллограф (Scope).

Рис. 9.1.2. Блок Sine Wave

9.1.3. Источник линейно изменяющегося воздействия Ramp

Назначение:
Формирует линейный сигнал вида y = Slope* time + Initial value.

1. Slope — Скорость изменения выходного сигнала.

2. Start time — Время начала формирования сигнала.

3. Initial value — Начальный уровень сигнала на выходе блока.

На Рис. 9.1.3. показано использование данного блока.

Рис. 9.1.3. Блок Ramp

9.1.4. Генератор ступенчатого сигнала Step

Назначение:
Формирует ступенчатый сигнал.

  1. Step time - Время наступления перепада сигнала (с).
  2. Initial value - Начальное значение сигнала.
  3. Final value - Конечное значение сигнала.

Перепад может быть как в большую сторону (конечное значение больше чем начальное), так и в меньшую (конечное значение меньше чем начальное). Значения начального и конечного уровней могут быть не только положительными, но и отрицательными (например, изменение сигнала с уровня –5 до уровня –3).

На Рис. 9.1.4. показано использование генератора ступенчатого сигнала.

Рис. 9.1.4. Блок Step

9.1.5. Генератор сигналов Signal Generator

  1. sine — Синусоидальный сигнал.
  2. square — Прямоугольный сигнал.
  3. sawtooth — Пилообразный сигнал.
  4. random — Случайный сигнал.
  1. Wave form – Вид сигнала.
  2. Amplitude – Амплитуда сигнала.
  3. Frequency - Частота (рад/с).
  4. Units – Единицы измерения частоты. Может принимать два значения:
    - Hertz - Гц.
    - rad/sec – рад/с.

На Рис. 9.1.5. показано применение этого источника при моделировании прямоугольного сигнала.

Рис. 9.1.5. Блок генератора сигналов

9.1.6. Источник случайного сигнала с равномерным распределением Uniform Random Number

Назначение:
Формирование случайного сигнала с равномерным распределением.

  1. Minimum – Минимальный уровень сигнала.
  2. Maximum – Максимальный уровень сигнала.
  3. Initial seed – Начальное значение.

Пример использования блока и график его выходного сигнала представлен на Рис. 9.1.6.

Рис. 9.1.6. Источник случайного сигнала с равномерным распределением

9.1.7. Источник случайного сигнала с нормальным распределением Random Number

Назначение:
Формирование случайного сигнала с нормальным распределением уровня сигнала.

Рис. 9.1.7. Источник случайного сигнала с нормальным распределением

9.1.8. Источник импульсного сигнала Pulse Generator

Назначение:
Формирование прямоугольных импульсов.

Пример использования Pulse Generator показан на рис. 9.1.8.

Рис. 9.1.8. Источник прямоугольных импульсов

9.1.9. Генератор линейно-изменяющейся частоты Chirp Generator

Назначение:
Формирование синусоидальных колебаний, частота которых линейно изменяется.

  1. Initial frequence — Начальная частота (Гц);
  2. Target time — Время изменения частоты (с);
  3. Frequence at target time — Конечное значение частоты (Гц).

Пример использования блока показан на Рис. 9.1.9.

Рис. 9.1.9. Генератор линейно-изменяющейся частоты

9.1.10. Генератор белого шума Band-Limited White Noice

Назначение:
Создает сигнал заданной мощности, равномерно распределенной по частоте.

Рис. 9.1.10 показывает работу этого генератора.

Рис. 9.1.10. Генератор белого шума

9.1.11. Источник временного сигнала Clock

Назначение:
Формирует сигнал, величина которого на каждом шаге расчета равна текущему времени моделирования.

  1. Decimation - Шаг, с которым обновляются показания времени на изображении источника (в том случае, если установлен флажок параметра Display time). Параметр задается как количество шагов расчета. Например, если шаг расчета модели в окне диалога Simulation parameters установлен равным 0.01 с, а параметр Decimation блока Clock задан равным 1000, то обновление показаний времени будет производиться каждые 10 с модельного времени.
  2. Display time - Отображение значения времени в блоке источника.

На рис. 9.1.11 показан пример работы данного источника.

Рис. 9.1.11. Источник временного сигнала

9.1.12. Цифровой источник времени Digital Clock

Назначение:
Формирует дискретный временной сигнал.

Sample time – Шаг модельного времени (с).

На Рис. 9.1.12 показана работа источника Digital Clock.

Рис. 9.1.12. Цифровой источник временного сигнала

9.1.13. Блок считывания данных из файла From File

Назначение:
Получение данных из внешнего файла.

Данные в файле должны быть представлены в виде матрицы:

Матрица должна состоять, как минимум, из двух строк. Значения времени записаны в первой строке матрицы, а в остальных строках находятся значения сигналов, соответствующие данным моментам времени. Значения времени должны быть записаны в возрастающем порядке. Выходной сигнал блока содержит только значения сигналов, а значения времени в нем отсутствуют. Если шаг расчета текущей модели не совпадает с отсчетами времени в файле данных, то Simulink выполняет линейную интерполяцию данных.

Файл данных (mat-файл), из которого считываются значения, не является текстовым. Структура файла подробно описана в справочной системе MATLAB. Пользователям Simulink удобнее всего создавать mat-файл с помощью блока To File (библиотека Sinks). На рис. 9.1.13 показан пример использования данного блока. Из файла data.mat считываются значения синусоидального сигнала.

Рис. 9.1.13. Блок From File

9.1.14. Блок считывания данных из рабочего пространства From Workspace

Назначение:
Получение данных из рабочего пространства MATLAB.

На рис. 9.1.14 показан пример использования данного блока. Данные в переменную simin рабочей области MATLAB загружаются из файла с помощью блока Read data.

Рис. 9.1.14. Блок From File

9.1.15. Блок сигнала нулевого уровня Ground

Назначение:
Формирование сигнала нулевого уровня.

На рис. 9.1.15 даны примеры использования блока. В первом случае сигнал с блока Ground поступает на один из входов сумматора, а во втором на один из входов блока умножения. Показания блоков Display подтверждают, что вырабатываемый блоком Ground сигнал имеет нулевое значение. Из рисунка также видно, что тип выходного сигнала блока устанавливается автоматически, в соответствии с типами сигналов, подаваемых на другие входы блоков (в данном случае – на входы блоков Sum и Product).

Рис. 9.1.15. Применение блока Ground

9.1.16. Блок периодического сигнала Repeating Sequence

Назначение:
Формирование периодического сигнала.

Блок выполняет линейную интерполяцию выходного сигнала для моментов времени не совпадающих со значениями заданными вектором Time values. На рис. 9.1.16 показан пример использования блока для формирования пилообразного сигнала. Значения модельного времени заданы вектором [0 3], а значения выходного сигнала вектором [0 2].

Рис. 9.1.16. Использование блока Repeating Sequence

9.1.17. Блок входного порта Inport

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

  • Sample time –Шаг модельного времени.
  • Data type – Тип данных входного сигнала: auto, double, single, int8, uint8, int16, uint16, int32, uint32 или boolean.
  • Signal type – Тип входного сигнала:
  1. auto – Автоматическое определение типа.
  2. real –Действительный сигнал.
  3. complex- Комплексный сигнал.
  • Interpolate data (флажок) – Интерполировать входной сигнал. В случае, если временные отсчеты входного сигнала считываемого из рабочей области MATLAB не совпадают с модельным временем, то блок будет выполнять интерполяцию входного сигнала. При использовании блока Inport в подсистеме данный параметр не доступен.

9.1.17.1. Использование блока Inport в подсистемах

Блоки Inport подсистемы являются ее входами. Сигнал, подаваемый на входной порт подсистемы через блок Inport, передается внутрь подсистемы. Название входного порта будет показано на изображении подсистемы как метка порта.

На рис. 9.1.17 показана модель, использующая подсистему и схема этой подсистемы.

Рис. 9.1.17. Использование блока Inport в подсистеме

9.1.17.2. Использование блока Inport в модели верхнего уровня

Для передачи сигнала из рабочего пространство MATLAB требуется не только установить в модели входной порт, но и выполнить установку параметров ввода на вкладке Workspace I/O окна диалога Simulation parameters… (должен быть установлен флажок для параметра Input и задано имя переменной, которая содержит входные данные). Тип вводимых данных: Array (массив), Structure (структура) или Structure with time (структура с полем "время") задается на этой же вкладке.

На рис. 9.1.18 показана модель, считывающая входной сигнал из рабочего пространства MATLAB. Подсистема Load Data обеспечивает ввод данных из файла в рабочую область MATLAB.

Рис. 9.1.18. Модель, считывающая входной сигнал из рабочего пространства MATLAB с помощью блока Input.

Сгенерировать и сохранить мелодию в виде звукового файла формата wav. Провести частотный анализ полученного сигнала.

Листинг программы:

% Частоты нот первой октавы, Гц

% частота дискретизации Fs - количество отсчетов в секунду

% длительность сигнала (сек) - количество отсчетов делить на частоту

% длительность сигнала (отсчеты) - количество секунд умножить на частоту

Fs1=16000; % Fs1 - частота дискретизации

Bits1=8; % Bits1 - разрядность кодирования звука

t1=0.2; % t1 - длительность секунд

n1=Fs1*t1; % n1 - длительность (отсчетов)

koef1=2*pi/Fs1; % koef1 - коэффициент для получения сигнала частото1 1 Гц

f_do=261.6; % f1 - частота сигнала ДО

y2=sin (f_mi*koef1*x); y= [y y2];

y2=sin (f_re*koef1*x); y= [y y2];

y2=sin (f_do*2*koef1*x); y= [y y2];

y2=sin (f_si*koef1*x); y= [y y2];

y2=sin (f_la*koef1*x); y= [y y2];

y2=sin (f_do*2*koef1*x); y= [y y2];

y2=sin (f_si*koef1*x); y= [y y2];

y2=sin (f_la*koef1*x); y= [y y2];

y2=sin (f_sol*koef1*x); y= [y y2];

y2=sin (f_mi*koef1*x); y= [y y2];

y2=sin (f_la*koef1*x); y= [y y2];

y2=sin (f_mi*koef1*x); y= [y y2];

y2=sin (f_sol*koef1*x); y= [y y2];

y2=sin (f_mi*koef1*x); y= [y y2];

y2=sin (f_do*2*koef1*x); y= [y y2];

y2=sin (f_re*koef1*x); y= [y y2];

y2=sin (f_mi*koef1*x); y= [y y2];

y2=sin (f_re*koef1*x); y= [y y2];

y2=sin (f_do*2*koef1*x); y= [y y2];

y2=sin (f_si*koef1*x); y= [y y2];

y2=sin (f_la*koef1*x); y= [y y2];

y2=sin (f_la*koef1*x); y= [y y2];

% сохранить мелодию в wav файл

wavwrite (y,Fs1,Bits1,'D: речь1. wav');

% сохранить мелодию в mp3 файл

% mp3write (y,Fs1,Bits1,'D: речь2. mp3');

[S,Fd,] =wavread ('D: речь1 разрядность 16. wav');

xlabel ('длительность сигнала');

ylabel ('амплитуда сигнала');

Re1 (k) =Re1 (k) +S (j) *cos (pi* (j-1) * (k-1) /Nf);

Im1 (k) =Im1 (k) +S (j) *sin (pi* (j-1) * (k-1) /Nf);

P1 (k) = (Re1 (k) ^2+Im1 (k) ^2) /Nt;

f1= [0.0001: Fd/ (2*Nf): Fd/2];

figure (2), plot (f1,P1)

xlabel ('частота сигнала');

ylabel ('энергия сигнала');

График зависимости объема wav-файлов от разрядности кодирования сигнала

Рисунок 1 - График зависимости объема wav-файлов от разрядности кодирования сигнала

График зависимости объема wav-файлов от битрейта

Рисунок 2 - График зависимости объема wav-файлов от битрейта

Спектр wav - файла разрядностью 8

Рисунок 3 - Спектр wav - файла разрядностью 8

а - Увеличенный спектр wav - файла разрядностью 8

Рисунок 3. а - Увеличенный спектр wav - файла разрядностью 8

Спектр wav - файла разрядностью 16

Рисунок 4 - Спектр wav - файла разрядностью 16

а - Увеличенный спектр wav - файла разрядностью 16

Рисунок 4. а - Увеличенный спектр wav - файла разрядностью 16

Спектр wav - файла разрядностью 24

Рисунок 5 - Спектр wav - файла разрядностью 24

а - Увеличенный спектр wav - файла разрядностью 24

Рисунок 5. а - Увеличенный спектр wav - файла разрядностью 24

Рисунок 6 - Спектр первой ноты "ДО", записанного wav-файла разрядностью 8

Спектр первой ноты

Рисунок 7 - Спектр первой ноты "ДО", записанного wav-файла разрядностью 16

звуковой сигнал формат разрядность

Рисунок 8 - Спектр ноты "РЕ", записанного wav-файла разрядностью 8

Спектр ноты

Рисунок 9 - Спектр ноты "РЕ", записанного wav-файла разрядностью 16

Рисунок 10 - Спектр ноты "ДО-РЕ", записанного wav-файла разрядностью 8

Рисунок 11 - Спектр ноты "ДО-РЕ", записанного wav-файла разрядностью 16




В данной лабораторной работе сгенерировали и сохранили мелодию в виде звукового файла формата wav. Провели частотный анализ полученного сигнала, результаты представлены выше.

Одной из самых распространённых задач является выявление в спектре сигнала составляющих. Делается это для того чтобы отфильтровать сигнал. Ведь иногда по одной линии передаётся далеко не один сигнал, в то время как обрабатывать каждый из них нужно по разному.

Рассмотрим простейший случай такого анализа в Matlab.

Сформируем временную сетку:

Теперь зададим сигнал для тренировок:

Изображение сигнала

Как видите это всего навсего 2 синусоиды. одна на частоте 50Гц, другая на 120Гц. В жизни такого конечно же нет. Это всего навсего математическая абстракция, которая поможет понять как всё происходит.

Выведем сигнал для наглядности:

Теперь делаем преобразование Фурье для нашего сигнала.

Имеем 512 отсчётов. Примем это во внимание для нахождения цифрового преобразования:

Домножим на комплексно сопряженное и нормализуем:

Теперь задаём сетку частот и выводим спектр:

Изображение спектра

Как видно на рисунке, в спектре имеется 2 выброса на частотах 50 и 120Гц. Что подтверждается частотами, которые мы задали.

Отмечу ещё раз, что это идеальная ситуация, которой в жизни никогда не бывает. В настоящем сигнале постоянно присутствуют помехи с самыми разными частотами, что существенно зашумляет спектр и делает его менее наглядным.


Matlab представляет полином как вектор – строку коэффициентов полинома, начиная со старшей степени многочлена.

Например, полином в Matlab представляется в виде >> p = [2 5 -4].

Список наиболее важных команд для работы с полиномами

roots(p) определяет корни полинома в виде вектора – столбца

polyval(p,x) вычисляет полином p по значениям вектора x

conv(p1, p2) вычисляет произведение полиномов p1 и p2

poly2str(p,’s’) отображает полином как выражение от s

poly(r) вычисляет полином, заданный вектором корней r.

Пример. Факторизация полинома

Генерирование сигналов

Генерирование непериодических сигналов

Функции генерирования часто встречающихся на практике непериодических сигналов:
1. функция y = rectpuls(t,w) формирует прямоугольный импульс единичной амплитуды для заданной в векторе t последовательности отсчетов времени, параметр w – ширина импульса

Fs=10^3; % Частота отсчетов

2. функция y = tripuls(t,w,s) формирует треугольный импульс единичной амплитуды для заданной в векторе t последовательности отсчетов времени, параметры w – ширина импульса, -1 -1

dlsym(n,d,u) - вычисление/построение графика выходного сигнала дискретной системы с системной функцией n(z) / d(z) при входном векторе u

dstep(n,d) - вычисление/построение графика переходной характеристики дискретной систе- мы с передаточной функцией n(z) / d(z)

dimpulse(n,d) - вычисление/построение графика импульсной характеристики системы n(z)/d(z).

Анализ линейных непрерывных систем

Передаточная функция непрерывной системы определяется в MATLAB отношением полиномов

где полином числителя ,

полином знаменателя . Коэффициенты B(s) и A(s) запоминаются в векторах , .

определяется векторами num = [ 5 2], den = [1 3 0 6].

Передаточная функция в полюсно – нулевом представлении

где zi – нули, pi – полюса, k –коэффициент усиления системы.

Для нахождения нулей, полюсов и усиления по передаточной функции H(s) используется процедура

Читайте также: