У меня есть базовое упражнение для телекоммуникаций с Matlab, и я должен построить треугольный импульс с (-c, 0) до (c, 0) с c = 6 и амплитудой = 1 в цикле for для M импульсов и приблизиться к периодическому импульсу используя N членов ряда Фурье. Я не могу найти что-то в Интернете, что может помочь мне до сих пор.
Похожий код для прямого импульса, который я сделал и работает, выглядит следующим образом:
a = 1;
b = 3;
N = 1000;
t = linspace(a-2*a,b+2*b,N);
A = 1;
y = rect_pulse(A,a,b,t);
plot(t,y);
grid on
axis([a-2*a b+2*b 0 2*A]);
M = 5;
T=7;
t_new = linspace(a-2*a,b+(M-1)*T+2*b,N);
y_new = zeros(1,N);
for index = 1:1:M
temp_y = rect_pulse(A,a+(index-1)*T,b+(index-1)*T,t_new);
y_new = y_new + temp_y;
end
figure;
plot(t_new,y_new);
grid on;
axis([a-2*a b+(M-1)*T+2*b 0 2*A]);
Где находится rect_pulse:
function y = rect_pulse (A,a,b,t)
N=length(t);
y = zeros(1,N);
for index = 1:1:N
if(t(1,index)>=a) && (t(1,index)<=b)
y(1,index) = A;
end
end
И ряд Фурье таков:
function y_fourier = fourier_series_rect_pulse(a,b,To,N,t)
y_fourier = 0;
wo = (2*pi)/To;
for n = -N:1:N
f_real = @(x) cos(n*wo*x);
f_imag = @(x) sin(n*wo*x);
cn = (1/To)*(quad(f_real,a,b)) - j*quad(f_imag,a,b));
y_fourier = y_fourier + cn*exp(j*n*wo*t);
end
y_fourier = real(y_fourier);
Есть идеи, как превратить это в треугольный импульс?