У меня есть следующее упражнение из университета:
Битовая последовательность [1 1 0 1 1 1 0 0] со скоростью передачи данных DR = 50 бит / с. Эта битовая последовательность модулирует амплитуду несущего сигнала с частотой F C = 1000 Гц. Во время передачи к модулированному сигналу добавляется белый шум с отклонением сигма = 0,5. Сигнал демодулируется в приемнике и фильтруется фильтром нижних частот с частотой среза FG = F C. Нанесите на график демодулированный и отфильтрованный сигнал приема и сравните его с сигналом передачи. Встроенные функции не допускаются, кроме обсужденных в лекции!
До сих пор я мог генерировать шум, используя следующий код:
t = linspace(0,0.1,1001);
sigma = 0.5;
avg = 0;
noise = sigma * randn(size(t))+avg;
plot(t,noise)
Я делал что-то подобное в предыдущем упражнении, но с некоторыми отличиями. У меня была прямоугольная волна, к которой я добавил шум, затем я отфильтровал результат с помощью фильтра нижних частот (не встроенной функции) и сравнил прямоугольную волну по умолчанию с той, к которой я добавил шум, и отфильтровал его (результат). Код для этого приведен ниже.
pkg load signal;
t = linspace(0,0.1,1001);
y = square(2*pi*50*t)*0.5 + 0.5;
mw = 0;
sigma = 0.5;
rauschen = sigma*randn(size(t))+mw;
yr = y + rauschen;
Y = fft(y);
Yr = fft(yr);
f = linspace(0,1/t(2),length(t));
plot(f,abs(Y),f,abs(Yr))
fg = 400;
Yru = Yr;
Yru(find(f>fg || f<1/t(2)-fg)) = 0;
find(f==fg)
ans = 41
Yru(41:end-41)=0;
plot(f,abs(Yru))
yru = ifft(Yru);
plot(t,real(yru));
На рисунке ниже показан результат предыдущего упражнения.
My main проблема в том, что я не могу генерировать необходимую несущую волну / сигнал ..