idinput

Сгенерируйте входные сигналы

Описание

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

пример

u = idinput(N) возвращает одноканальный случайный двоичный входной сигнал u длины N. Сгенерированные значения сигналов: -1 или 1.

пример

u = idinput([N,Nu]) возвращает Nu-канальный случайный двоичный входной сигнал, где каждый сигнал канала имеет длину N. Сигналы в каждом канале отличаются друг от друга.

пример

u = idinput([Period,Nu,NumPeriod]) возвращает Nu-канальный периодический случайный двоичный входной сигнал с заданным периодом и количеством периодов. Каждый сигнал входного канала имеет длину NumPeriod* Period.

пример

u = idinput(___,Type) задает тип входа, который будет сгенерирован как один из следующих:

  • 'rbs' - Случайный двоичный сигнал

  • 'rgs' - Случайный Гауссов сигнал

  • 'prbs' - Псевдослучайный двоичный сигнал

  • 'sine' - Сигнал суммы синусоидов

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

пример

u = idinput(___,Type,Band) задает полосу частот сигнала. Для псевдослучайных двоичных сигналов (PRBS), Band задает обратное значение тактового интервала сигнала.

пример

u = idinput(___,Type,Band,Range) задает амплитудный диапазон сигнала.

пример

[u,freq] = idinput(___,'sine',Band,Range,SineData) задает Type как сигнал суммы синусоидов и определяет характеристики синусоид, используемых для генерации сигнала в SineData. Можно задать такие характеристики, как количество синусоид и их частотное разделение. Частоты синусоид возвращаются в freq.

Примеры

свернуть все

Сгенерируйте одноканальный случайный двоичный входной сигнал с 200 выборками.

N = 200;
u = idinput(N);

u - вектор-столбец длины 200. Значения в u являются либо -1, либо 1.

Создайте iddata объект от сгенерированного сигнала. В данном примере задайте шаг расчета как 1 секунду.

u = iddata([],u,1);

Чтобы изучить сигнал, постройте график.

plot(u)

Figure contains an axes. The axes with title u1 contains an object of type line. This object represents u.

Сгенерированный сигнал является случайным двоичным входным сигналом со значениями -1 или 1. Можно использовать сгенерированный входной сигнал, чтобы симулировать выход системы с помощью sim команда.

Сгенерируйте двухканальный случайный двоичный входной сигнал с 200 выборками.

N = 200;
u = idinput([N,2]);

u является матрицей 200 на 2 со значениями -1 или 1.

Создайте iddata объект от сгенерированного сигнала. В данном примере задайте шаг расчета как 1 секунду.

u = iddata([],u,1);

Постройте график сигналов для двух каналов и исследуйте сигналы.

plot(u)

Figure contains 2 axes. Axes 1 with title u1 contains an object of type line. This object represents u. Axes 2 with title u2 contains an object of type line. This object represents u.

На график показаны два сгенерированных случайных двоичных сигнала со значениями -1 или 1.

Сгенерируйте одноканальный периодический случайный двоичный входной сигнал с периодом 10 выборки и 5 периодов в сигнале.

NumChannel = 1;
Period = 10;
NumPeriod = 5;
u = idinput([Period,NumChannel,NumPeriod]);

u - вектор-столбец длиной 50 (= Period * NumPeriod). Значения в u являются либо -1, либо 1.

Создайте iddata объект от сгенерированного сигнала. Задайте шаг расчета 1 секунду.

u = iddata([],u,1);

Постройте график сигнала.

plot(u)

Figure contains an axes. The axes with title u1 contains an object of type line. This object represents u.

Как задано, сгенерированный одноканальный периодический случайный двоичный входной сигнал имеет период 10 секунд, и в сигнале целых 5 периодов.

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

NumChannel = 1;
Period = 50;
NumPeriod = 5;
u = idinput([Period,NumChannel,NumPeriod],'rgs');

u - вектор-столбец длиной 250 (= Period * NumPeriod).

Создайте iddata объект из сгенерированного сигнала и постройте график сигнала. В данном примере задайте шаг расчета 0,01 секунды.

u = iddata([],u,0.01);
plot(u)

Figure contains an axes. The axes with title u1 contains an object of type line. This object represents u.

График показывает, что u содержит случайный сегмент из 50 выборок, повторенных 5 раз. Сигнал является Гауссовым сигналом белого шума с нулем среднего и дисперсионным единицей.

Поскольку шаг расчета составляет 0,01 секунды, сгенерированный сигнал имеет период 0,5 секунды. Частотное содержимое сигнала охватывает всюсь доступную область значений (0-50 Гц).

Теперь задайте полосу пропускания между 0 и 25 Гц (= 0,5 раза больше частоты Найквиста).

Band = [0 0.5];
u2 = idinput([Period,NumChannel,NumPeriod],'rgs',Band);

Создайте iddata объект и постройте график сигнала.

u2 = iddata([],u2,0.01);
plot(u2)

Figure contains an axes. The axes with title u1 contains an object of type line. This object represents u2.

Частотное содержимое сгенерированного сигнала u2 ограничивается частотой 0-25 Гц.

Псевдослучайный двоичный входной сигнал (PRBS) является детерминированным сигналом, частотные свойства которого имитируют белый шум. PRBS по своей сути является периодическим с максимальной длиной периода 2n-1, где целое число n является порядком PRBS. Для получения дополнительной информации см. Pseudorandom Binary Signals.

Укажите, что одноканальное значение PRBS переключается между -2 и 2.

Range = [-2,2];

Задайте тактовый период сигнала как 1 выборку. То есть значение сигналов может изменяться на каждом временном шаге. Для сигналов PRBS тактовый период задан в Band = [0 B], где B - обратное значение необходимого периода синхроимпульса.

Band = [0 1];

Сгенерируйте непериодический PRBS длины 100 выборок.

u = idinput(100,'prbs',Band,Range);
Warning: The PRBS signal delivered is the 100 first values of a full sequence of length 127.

PRBS по своей сути является периодическим. Чтобы сгенерировать непериодический сигнал, программное обеспечение генерирует максимальную длину PRBS длины 127, которая имеет период, больший необходимого количества выборок 100. Программа возвращает первые 100 выборок сгенерированного PRBS. Это действие гарантирует, что сгенерированный сигнал не является периодическим, как указано в сгенерированном предупреждении.

Создайте iddata объект от сгенерированного сигнала. В данном примере задайте шаг расчета как 1 секунду.

u = iddata([],u,1);

Постройте график и исследуйте сгенерированный сигнал.

plot(u);
title('Non-Periodic Signal')

Figure contains an axes. The axes with title u1 contains an object of type line. This object represents u.

Сгенерированный сигнал является непериодическим PRBS длины 100, который переключается между -2 и 2.

Задайте, что псевдослучайный двоичный входной сигнал (PRBS) переключается между -2 и 2.

Range = [-2,2];

Задайте тактовый период сигнала как 1 выборку. То есть значение сигналов может изменяться на каждом временном шаге. Для сигналов PRBS тактовый период задан в Band = [0 B], где B - обратное значение необходимого периода синхроимпульса.

Band = [0 1];

Сгенерируйте одноканальный, периодический PRBS с периодом 100 выборки и 3 периодов в сигнале.

u1 = idinput([100,1,3],'prbs',Band,Range);
Warning: The period of the PRBS signal was changed to 63. Accordingly, the length of the generated signal will be 189.

PRBS по своей сути является периодическим с максимальной длиной периода 2n-1, где целое число n является порядком PRBS. Если заданный период не равен максимальной длине PRBS, программа настраивает период сгенерированного сигнала, чтобы получить целое число максимальной длины PRBS, и выдает предупреждение. Для получения дополнительной информации о PRBS максимальной длины, см. Pseudorandom Binary Signals. В этом примере требуемый период 100 не равен максимальной длине PRBS, поэтому программное обеспечение вместо этого генерирует максимальную длину PRBS порядка n = floor(log2(Period)) = 6. Таким образом, период сигнала PRBS составляет 63 (= 26-1), и длина сгенерированного сигнала составляет 189 (= NumPeriod*63). Этот результат указывается в сгенерированном предупреждении.

Создайте iddata объект из сгенерированного сигнала и постройте график сигнала. Укажите период сигнала как 63 выборки.

u1 = iddata([],u1,1,'Period',63);
plot(u1)
title('Periodic Signal')

Figure contains an axes. The axes with title u1 contains an object of type line. This object represents u1.

Сгенерированный сигнал является периодическим PRBS с тремя периодами.

Сгенерируйте периодические и непериодические псевдослучайные двоичные входные сигналы (PRBS) с заданным периодом синхроимпульса.

Сгенерируйте одноканальный PRBS, который переключается между -2 и 2. Задайте тактовый период сигнала как 4 выборки. То есть сигнал должен оставаться постоянным в течение по меньшей мере 4 последовательных выборок, прежде чем он сможет измениться. Для сигналов PRBS тактовый период задан в Band = [0 B], где B - обратное значение необходимого периода синхроимпульса.

Range = [-2,2];
Band = [0 1/4];

Сначала сгенерируйте непериодический сигнал длины 100.

u1 = idinput(100,'prbs',Band,Range);
Warning: The PRBS signal delivered is the 100 first values of a full sequence of length 124.

Чтобы понять сгенерированное предупреждение, сначала обратите внимание, что код эквивалентен генерации одноканального PRBS с периодом 100 выборки и 1 периодом.

u1 = idinput([100,1,1],'prbs',Band,Range);

Сгенерированный сигнал PRBS должен оставаться постоянным как минимум для 4 выборок, прежде чем значение может измениться. Чтобы удовлетворить это требование, программное обеспечение сначала вычисляет порядок наименьшей возможной максимальной длины PRBS как n = floor(log2(Period*B)) = 4 и период 2n-1=15. Для получения информации о PRBS максимальной длины смотрите Pseudorandom Binary Signals. Затем программное обеспечение растягивает этот PRBS таким образом, чтобы период растянутого сигнала был P=(1/B)(2n-1)=60.

Однако, поскольку этот период меньше указанной длины 100, программное обеспечение вычисляет вместо этого PRBS максимальной длины порядка m = n+1 = 5. Затем программное обеспечение растягивает этот PRBS, так что период сейчас P2=(1/B)(2m-1)=124. Программное обеспечение возвращает первые 100 выборок этого сигнала следующим u1. Этот результат гарантирует, что сгенерированный сигнал не является периодическим, но является постоянным на каждые 4 выборки.

Создайте iddata объект от сгенерированного сигнала. В данном примере задайте шаг расчета как 1 секунду.

u1 = iddata([],u1,1);

Постройте график и исследуйте сигнал.

plot(u1);
title('Nonperiodic Signal')

Figure contains an axes. The axes with title u1 contains an object of type line. This object represents u1.

Сгенерированный сигнал является непериодическим PRBS длины 100. Сигнал остается постоянным по меньшей мере для 4 выборок перед каждым изменением значения. Таким образом, сигнал удовлетворяет тактовому периоду, указанному в Band.

Теперь сгенерируйте периодический сигнал с периодом 100 выборок и 3 периодами.

u2 = idinput([100,1,3],'prbs',Band,Range);
Warning: The period of the PRBS signal was changed to 60. Accordingly, the length of the generated signal will be 180.

Чтобы сгенерировать периодический сигнал с заданным тактовым периодом, программное обеспечение генерирует u2 как 3 повторения исходного растянутого сигнала периода P = 60. Таким образом, длина u2 является P*NumPeriod = 60*3 = 180. Это изменение периода и длины сгенерированного сигнала указывается в сгенерированном предупреждении.

Создайте iddata объект из сгенерированного сигнала и постройте график сигнала. Задайте период сигнала как 60 секунд.

u2 = iddata([],u2,1,'Period',60);
plot(u2)
title('Periodic Signal')

Figure contains an axes. The axes with title u1 contains an object of type line. This object represents u2.

Сгенерированный сигнал является периодическим PRBS с 60-секундным периодом и 3 периодами. Сигнал остается постоянным по меньшей мере для 4 выборок перед каждым изменением значения. Таким образом, сигнал удовлетворяет заданному тактовому периоду.

Можно сгенерировать сигнал суммы синусоидов, используя характеристики по умолчанию для синусоид. Кроме того, вы конфигурируете количество синусоид, а также частоты и фазы синусоид. Этот пример показывает оба подхода.

Укажите, что сигнал имеет 50 выборки в каждом периоде и 3 периода. Также задайте, что область значений амплитуд сигнала находится между -1 и 1.

Period = 50;
NumPeriod = 3;
Range = [-1 1];

Задайте частотную область значений сигнала. Для сигнала суммы синусоидов вы задаете нижнюю и верхнюю частоты полосы пропускания в фракциях частоты Найквиста. В этом примере используйте всюсь частотную область значений между 0 и частотой Найквиста.

Band = [0 1];

Сначала сгенерируйте сигнал, используя характеристики по умолчанию для синусоид. По умолчанию программа использует 10 синусоиды, чтобы сгенерировать сигнал. Программа присваивает случайную фазу каждой синусоиде, а затем изменяет эти фазы 10 раз, чтобы получить наименьшее распространение сигнала. Разброс сигнала является различием между минимальным и максимальным значением сигнала по всем выборкам.

[u,freq] = idinput([Period 1 NumPeriod],'sine',Band,Range);

Программное обеспечение возвращает сигнал суммы синусоидов в u и частоты синусоидов в freq. Значения в freq масштабируются, принимая, что шаг расчета 1 раз модуля. Предположим, что шаг расчета составляет 0,01 часов. Чтобы извлечь фактические частоты в рад/часы, разделите значения на шаг расчета.

Ts = 0.01; % Sample time in hours
freq = freq/Ts;
freq(1)
ans = 12.5664

freq(1) - частота первой синусоиды. Чтобы увидеть, как программное обеспечение выбирает частоты, смотрите SineData описание аргумента на idinput страница с описанием.

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

ufft = fft(u);
Fs = 2*pi/Ts; % Sampling frequency in rad/hour
L = length(u);
w = (0:L-1)*Fs/L;
stem(w(1:L/2),abs(ufft(1:L/2))) % Plot until Nyquist frequency
title('Single-Sided Amplitude Spectrum of u(t)')
xlabel('Frequency (rad/hour)')
ylabel('Amplitude')

Figure contains an axes. The axes with title Single-Sided Amplitude Spectrum of u(t) contains an object of type stem.

Сгенерированный график показывает частоты 10 синусоид, используемых для генерации сигнала. Для примера график показывает, что первая синусоида имеет частоту 12,57 рад/час, такую же как freq(1).

Преобразуйте сгенерированный сигнал в iddata объект и постройте график сигнала. Задайте шаг расчета как 0,01 часа.

u = iddata([],u,Ts,'TimeUnit','hours');
plot(u)

Figure contains an axes. The axes with title u1 contains an object of type line. This object represents u.

Сигнал u генерируется с использованием 10 синусоидов и имеет период 0,5 часов и 3 периодов.

Теперь измените количество, частоту и фазу синусоидов, которые используются для генерации сигнала суммы синусоидов. Используйте 12 синусоидов и попробуйте 15 различных наборов фаз. Чтобы задать частоты синусоидов, задайте GridSkip = 2. Программа выбирает частоты синусоидов от пересечения частотной сетки 2*pi*[1:GridSkip:fix(Period/2)]/Period и полосы пропускания pi*Band.

NumSinusoids = 12;
NumTrials = 15;
GridSkip = 2;
SineData = [NumSinusoids,NumTrials,GridSkip];
u2 = idinput([Period 1 NumPeriod],'sine',Band,Range,SineData);

Преобразуйте сгенерированный сигнал в iddata объект и постройте график сигнала.

u2 = iddata([],u2,Ts,'TimeUnit','hours');
plot(u2)

Figure contains an axes. The axes with title u1 contains an object of type line. This object represents u2.

Сигнал u2 генерируется с использованием 12 синусоидов и имеет период 0,5 часов и 3 периодов.

Входные параметры

свернуть все

Количество сгенерированных выборок входных данных, заданное как действительное положительное целое число. Для одноканальных входных данных сгенерированный входной u имеет N строки. Для Nu-канальные входные данные, u возвращается как N-by- Nu матрица, где каждый сигнал канала имеет длину N.

Количество входа каналов в сгенерированном сигнале, заданное как действительное положительное целое число.

Количество выборок в каждом периоде сгенерированного сигнала, заданное как действительное положительное целое число. Используйте этот вход, чтобы задать периодический сигнал. Также задайте количество периодов в NumPeriod. Каждый сгенерированный вход канала имеет NumPeriod*Period выборки.

Количество периодов в сгенерированном сигнале, заданное как действительное положительное целое число. Используйте этот вход, чтобы задать периодический сигнал. Также задайте сигнал Period. Каждый сгенерированный вход канала имеет NumPeriod*Period выборки.

Тип сгенерированного сигнала, заданный как одно из следующих значений:

  • 'rbs' - Генерирует случайный двоичный сигнал. Случайный двоичный сигнал является случайным процессом, который принимает только два значения. Можно задать эти значения с помощью Range. Чтобы сгенерировать сигнал с ограниченной полосой частот, задайте полосу пропускания в Band. Чтобы сгенерировать периодический сигнал, задайте Period и NumPeriod.

  • 'rgs' - Генерирует случайный Гауссов сигнал. У сгенерированного Гауссовского сигнала есть средний μ и стандартное отклонение σ таким образом, который [μ-σ, μ +σ] равняется Range. Чтобы сгенерировать ограниченный полосой Гауссов сигнал, задайте полосу пропускания в Band. Чтобы сгенерировать периодический Гауссов сигнал с n период выборок, который повторяется m раз, задайте Period как n и NumPeriod как m.

  • 'prbs'- Генерирует псевдослучайный двоичный сигнал (PRBS). PRBS является периодическим, детерминированным сигналом с белошумоподобными свойствами, который смещается между двумя значениями. Можно задать эти два значения с помощью Range. Можно также задать тактовый период, минимальное количество интервалов дискретизации, для которых значение сигнала не меняется. Вы задаете обратную сторону тактового периода в Band.

    Длина сгенерированного сигнала не всегда совпадает с тем, что вы задаете. Длина зависит от того, требуется ли вам периодический или непериодический сигнал, а также от заданного периода времени. Для получения дополнительной информации см. Pseudorandom Binary Signals.

  • 'sine'- Генерирует сигнал, который является суммой синусоидов. Программа выбирает частоты синусоидов, которые будут равномерно распределены по выбранной сетке, и присваивает каждой синусоиде случайную фазу. Затем программное обеспечение пробует несколько случайных фаз для каждой синусоиды и выбирает фазы, которые дают наименьший разброс сигнала. Разброс сигнала является различием между минимальным и максимальным значением сигнала по всем выборкам. Амплитуда сгенерированного сигнала суммы синусоидов масштабируется, чтобы удовлетворить Range вы задаете.

    Можно задать характеристики синусоид, используемой для генерации сигнала, такие как количество синусоид и их разделение частот, в SineData аргумент.

Частотная область значений сгенерированного сигнала, заданный как вектор-строка 1 на 2, содержащий минимальное и максимальное значения частоты.

  • Если Type является 'rgs', 'rbs', или 'sine' - Задайте Band в качестве полосы пропускания [wlow whigh]. Где, wlow и whigh являются нижней и верхней частотами полосы пропускания, выраженными в долях частоты Найквиста. Для примера, чтобы сгенерировать вход с белыми шумовыми характеристиками, используйте Band = [0 1].

    Программное обеспечение достигает содержимого частоты для случайного Гауссова сигнала ('rgs') использование idfilt с фильтром Баттерворта восьмого порядка, некаузальным. Для генерации случайного двоичного сигнала ('rbs'), программное обеспечение использует тот же фильтр, а затем делает сигнал двоичным. Таким образом, содержимое частоты в сгенерированном случайном двоичном сигнале может не совпадать с заданным диапазоном пропускания.

    Для 'sine' сигналы, частоты синусоидов выбирают так, чтобы они равномерно распределялись по выбранной сетке в заданной полосе пропускания. Для получения дополнительной информации смотрите SineData описание аргумента.

  • Если Type является 'prbs' - Задайте Band как [0 B], где B - обратный тактовый период сигнала. Период синхронизации является минимальным количеством интервалов дискретизации, для которых значение сигнала не меняется. Таким образом, сгенерированный сигнал является постоянным по интервалам длины 1/B выборки. Если 1/B не является целым числом, использует программное обеспечение floor(1/B) как тактовый период.

Сгенерированный входной сигнал области значений, заданный как двухэлементный вектор-строка вида [umin,umax].

  • Если Type является 'rbs' или 'prbs'- Сгенерированный сигнал u имеет значения umin или umax.

  • Если Type является 'sine' - Сгенерированный сигнал u имеет значения между umin и umax.

  • Если Type является 'rgs' - У сгенерированного Гауссовского сигнала есть средний μ и стандартное отклонение σ таким образом что umin и umax равны μ-σ и μ +σ, соответственно. Для примера, Range = [-1,1] возвращает Гауссов сигнал белого шума с нулем среднего и дисперсионным единицей.

Характеристика синусоидов, используемых для генерации сигнала суммы синусоидов, заданная как трехэлементный вектор-строка [NumSinusoids,NumTrials,GridSkip]. Где,

  • NumSinusoids количество синусоидов, используемых для генерации сигнала. Значение по умолчанию 10.

  • NumTrials - количество различных случайных относительных фаз синусоидов, которые программа пытается найти с наименьшим распространением сигнала. Разброс сигнала является различием между минимальным и максимальным значением сигнала по всем выборкам.

    Максимальная амплитуда сигнала суммы синусоидов зависит от относительных фаз различных синусоидов. Чтобы найти фазы, которые дают наименьшее распространение сигнала, программное обеспечение пытается NumTrials различные случайные варианты фаз для нахождения оптимальных значений фаз. Например, предположим, что NumSinusoids является 20 и NumTrials является 5. Программа пробует 5 различных наборов относительных фаз для 20 синусоидов и выбирает фазы, которые дают наименьший разброс сигнала. Значение по умолчанию для NumTrials является 10.

  • GridSkip используется для характеристики частоты синусоидов. Программа выбирает частоту синусоидов от пересечения частотной сетки 2*pi*[1:GridSkip:fix(Period/2)]/Period и полосу пропускания pi*[Band(1) Band(2)]. Для многоканальных входных сигналов программное обеспечение использует различные частоты от этой частотной сетки, чтобы сгенерировать различные входные каналы. Можно использовать GridSkip для управления нечетными и четными множителями частоты, для примера, для обнаружения нелинейностей различных видов.

    Чтобы извлечь частоты freq которые выбираются программным обеспечением для генерации сигнала, используйте следующий синтаксис.

    [u,freq] = idinput(__)

Выходные аргументы

свернуть все

Сгенерированный входной сигнал, возвращенный как вектор-столбец длины N для одноканального входа или N-by- Nu матрица для Nu-канальный сигнал. Вы используете сгенерированный сигнал, чтобы симулировать ответ вашей системы, используя sim.

Вы можете создать iddata объект из u путем определения выходных данных как [].

u = iddata([],u);

В iddata объект, можно также задать свойства сигнала, такие как шаг расчета, входные имена и периодичность.

Частоты синусоид, используемых для сигнала суммы синусоидов, возвращаются как вектор-столбец длины, равной количеству синусоидов, NumSinusoids. Вы задаете NumSinusoids в SineData аргумент. Значения частоты масштабируются, принимая, что шаг расчета 1 раз модуля. Чтобы извлечь фактические частоты, разделите значения на шаг расчета. Для получения примера смотрите Сгенерировать сигнал суммы синусоидов.

Для многоканальных входных сигналов, freq является Nu-by- NumSinusoids матрица, где k-я строка содержит частоты, соответствующие k-му каналу. Для получения информации о том, как программное обеспечение выбирает частоты, смотрите SineData описание аргумента.

Подробнее о

свернуть все

Псевдослучайные двоичные сигналы

Псевдослучайный двоичный сигнал (PRBS) является периодическим, детерминированным сигналом с белошумоподобными свойствами, который смещается между двумя значениями.

PRBS генерируется как:

u(t)=rem(a1u(t1)++anu(tn),2)

Вот, u(t1),u(tn) является вектором прошлых входов, n является порядком PRBS и rem обозначает оставшуюся часть, когда (a1u(t1)+anu(tn)) делится на 2. Таким образом, PRBS может принимать только значения 0 и 1. Программа масштабирует эти значения в соответствии с Range вы задаете. В сложение вектор прошлых входов u(t1),u(tn) может взять только 2n значения. Из этих значений состояние со всеми нулями игнорируется, потому что это приведет к тому, что будущие сигналы будут равны нулю. Таким образом, PRBS является по своей сути периодическим сигналом с максимальной длиной периода 2n-1. В следующей таблице перечислена максимально возможная длина для различных n порядков PRBS.

Порядок nМаксимальная длина PRBS (2n-1)
23
37
415
531
663
7127
324294967295

Примечание

Программное обеспечение не генерирует сигналы с периодом более 232-1.

Длина сгенерированного PRBS

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

Период синхроимпульса = 1 выборка (Band = [0 B] = [0 1]):

  • Чтобы сгенерировать непериодический сигнал длины N, (NumPeriod = 1), программное обеспечение сначала вычисляет максимальную длину PRBS с периодом, большим N. Затем программное обеспечение возвращает первое N выборки PRBS как u. Это действие гарантирует, что u не является периодическим. Для примера, если N равен 100, программное обеспечение создает максимальную длину PRBS периода 127 (порядок 7) и возвращает первые 100 выборок следующим u.

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

  • Чтобы сгенерировать периодический сигнал (NumPeriod > 1), программное обеспечение настраивает период сигнала, чтобы получить целое число максимальной длины PRBS. Для этого программное обеспечение вычисляет PRBS порядка n = floor(log2(Period)) и период P = 2n-1. Сигнал u затем генерируется как NumPeriod повторения этого сигнала PRBS периода P. Таким образом, длина u является P*NumPeriod.

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

    В случае канала с несколькими входами сигналы максимально сдвинуты. То есть перекрытие между различными входами минимизируется. Это означает Period/NumPeriod является верхней границей для порядков модели, которые можно оценить с помощью такого сигнала.

Период времени > 1 выборка (Band = [0 B], where B<1):

Сгенерированный сигнал должен оставаться постоянным как минимум 1/B выборки. Чтобы удовлетворить это требование, программное обеспечение сначала вычисляет порядок наименьшей возможной максимальной длины PRBS как n = floor(log2(Period*B)) и период 2n-1. Затем программное обеспечение растягивает PRBS, так что период растянутого сигнала является P = B-1(2n-1).

  • Чтобы сгенерировать непериодический сигнал длины N , если период P растянутого сигнала больше или равен Nпрограммное обеспечение возвращает первое N выборки растянутого сигнала как u. Это гарантирует, что u является непериодическим, но постоянным для каждого 1/B выборки. Обратите внимание, что для непериодического сигнала, Period равно N.

    Если период P меньше Nпрограммное обеспечение вычисляет вместо этого PRBS максимальной длины порядка n2 = n+1. Затем программное обеспечение растягивает эту PRBS так, что период теперь P2 = B-1(2n2-1). Затем программное обеспечение возвращает первое N выборки этого сигнала как u.

  • Чтобы сгенерировать периодический сигнал, программное обеспечение генерирует u как NumPeriod повторения растянутого сигнала периода P. Таким образом, длина u является P*NumPeriod.

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

Ссылки

[1] Söderström, T. and P. Stoica., Chapter C5.3 in Система идентификации, Prentice Hall, 1989.

[2] Ljung, L., Section 13.3 in Система Идентификации: Theory for the User, Prentice Hall PTR, 1999.

Представлено до R2006a