Мне нужно создать прямоугольный импульс с 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, мой пульс становится лучше. Почему это влияет на мой результат?
Обратите внимание, что второе, что мне нужно сделать, это создать периодическую последовательность тактовых импульсов. Я не знаю, повлияет ли это на то, как я должен реализовать свой первоначальный прямоугольный импульс.
Я имею в виду более прямоугольные, если это имеет смысл ?. Я новичок во всем этом, так что вы должны извинить меня.
Что ж, ваш сигнал определяется только в точках выборки, между ними на графике есть прямые линии. Чем ближе точки друг к другу, тем более вертикальной будет прямая линия от одной выборки со значением 0 к следующей выборке со значением 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 прямо сейчас.
Привет, спасибо большое! Можно сказать, что это похоже на выборку? Мы точнее, поэтому импульс более прямоугольный?
@Andrew, вы можете обратиться к этому изображению: cradle-cfd.com/dcms_media/image/en_column_basic_fig5.1.jpg Чем меньше шаг, тем тоньше будут синие столбцы гистограммы, которые аппроксимируют непрерывную функцию (красный, точки) ... Это означает, что да, будет выбрано больше точек в красных функциях. , что приводит к большей точности. До предела step = 0
, и в этом случае синяя гистограмма будет непрерывной и полностью аппроксимирует красную функцию.
Большое спасибо. Еще одна вещь, N в коде, который вы написали, означает, сколько импульсов мы получим в периодической последовательности. Например, если N = 100
, то получится 100 прямоугольных импульсов? А size(t)
имеет отношение к ширине?
@Andrew Да, N
- это количество импульсов, удаленных друг от друга на 200 ms
. size(t)
не имеет отношения к ширине (вы можете управлять шириной с помощью w
), но представляет собой количество точек выборки для каждого импульса и требуется для функции plot
.
Что вы имеете в виду, когда говорите «мой пульс лучше»? При более мелкой выборке у вас должно быть больше выборок в импульсе, но сигнал по-прежнему должен иметь нулевые значения вне импульса и любые постоянные положительные значения внутри.