Сгенерируйте прямоугольный импульс в MATLAB

Мне нужно создать прямоугольный импульс с width = 7 и диапазоном (-T/2, T/2), где T 59 мс.

Я написал этот код, но я не уверен, что это правильно.

w = 7;
T = 59;
t = -T/2:1:T/2;

rect = rectpuls(t, w);
plot(t, rect);

Этот код генерирует прямоугольный импульс, но я не уверен, что это правильно. Кроме того, я не совсем уверен, что означает t = -T/2:1:T/2;. Я имею в виду диапазон от -29,5 до 29,5 с шагом 1. Когда я устанавливаю это на 0,1 или 0,01, мой пульс становится лучше. Почему это влияет на мой результат?

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

Что вы имеете в виду, когда говорите «мой пульс лучше»? При более мелкой выборке у вас должно быть больше выборок в импульсе, но сигнал по-прежнему должен иметь нулевые значения вне импульса и любые постоянные положительные значения внутри.

Cris Luengo 17.05.2022 21:04

Я имею в виду более прямоугольные, если это имеет смысл ?. Я новичок во всем этом, так что вы должны извинить меня.

Andrew 17.05.2022 21:16

Что ж, ваш сигнал определяется только в точках выборки, между ними на графике есть прямые линии. Чем ближе точки друг к другу, тем более вертикальной будет прямая линия от одной выборки со значением 0 к следующей выборке со значением 1. Но это всего лишь график, сигнал по-прежнему одинаково резкий.

Cris Luengo 17.05.2022 22:26
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
1
3
26
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Когда вы увеличиваете количество приращений числовой функции (например, Matlab rectpuls), используемой в процессе дискретизации непрерывного, вы получите, как следствие, точность указанной функции за счет (в этом случае, незначительные) дополнительных вычислительных затрат. Вы делаете именно это, когда дискретизируете, используя меньшие временные шаги, от 1 до 0.1 и до 0.01.

Для создания периодической последовательности одинаковых прямоугольных импульсов можно вызвать функцию в цикле:

w = 7;
T = 59;
t = -T/2:1:T/2;
t_size = size(t);
N = 10;
rect = zeros(N, t_size(2));
interval = 20;

figure
plot(t, rectpuls(t, w));
xlim([-20 (N + 1)*interval]);
ylim([0 1.1]);
hold on
for i = 1:N
    t = (-T/2 + i*interval): 1 :(T/2 + i*interval);
    rect(i,:) = rectpuls(t - i * interval, w);
    plot(t, rect(i,:));
    hold on
end

Вышеописанное должно генерировать одинаковые прямоугольные импульсы каждые interval = 20 ms в течение interval * (N + 1) = 220 ms.

@CrisLuengo Я отредактировал ошибку, это может сработать, но я не могу проверить код в Matlab прямо сейчас.

Giogre 17.05.2022 21:19

Привет, спасибо большое! Можно сказать, что это похоже на выборку? Мы точнее, поэтому импульс более прямоугольный?

Andrew 17.05.2022 21:23

@Andrew, вы можете обратиться к этому изображению: cradle-cfd.com/dcms_media/image/en_column_basic_fig5.1.jpg Чем меньше шаг, тем тоньше будут синие столбцы гистограммы, которые аппроксимируют непрерывную функцию (красный, точки) ... Это означает, что да, будет выбрано больше точек в красных функциях. , что приводит к большей точности. До предела step = 0, и в этом случае синяя гистограмма будет непрерывной и полностью аппроксимирует красную функцию.

Giogre 17.05.2022 21:27

Большое спасибо. Еще одна вещь, N в коде, который вы написали, означает, сколько импульсов мы получим в периодической последовательности. Например, если N = 100, то получится 100 прямоугольных импульсов? А size(t) имеет отношение к ширине?

Andrew 17.05.2022 21:35

@Andrew Да, N - это количество импульсов, удаленных друг от друга на 200 ms. size(t) не имеет отношения к ширине (вы можете управлять шириной с помощью w), но представляет собой количество точек выборки для каждого импульса и требуется для функции plot.

Giogre 17.05.2022 21:43

Другие вопросы по теме