生成载波,添加噪声并在八度中使用低通滤波器进行滤波

问题描述 投票:0回答:1

我从大学得到以下练习:

给出数据速率DR = 50 bps的位序列[1 1 0 1 1 1 0 0]。该位序列调制频率为FC = 1000 Hz的载波信号的幅度。在传输期间,将偏差sigma = 0.5的白噪声添加到调制信号中。信号在接收器中被解调,并用截止频率为FG = FC的低通滤波器进行滤波。绘制解调和滤波后的接收信号,并将其与传输信号进行比较。 除讲座中讨论的以外,不允许使用内置函数!

到目前为止,我已经可以使用以下代码生成噪声:

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));

下面的图片显示了上一个练习的结果。

enter image description here

我的主要问题是我无法生成所需的载波/信号。

signals octave carrierwave noise lowpass-filter
1个回答
0
投票

由于article,我想我已经知道了。这是代码,结果显示在下面的图片中。

pkg load signal;
bits = [ 1 1 0 1 1 1 0 0 ];
bitrate =  50;
n = 1000;
T = length(bits)/bitrate;
N = n*length(bits);
dt = T/N;
t = 0:dt:T;
x = zeros(1,length(t));
lastbit = 1;
for i=1:length(bits)
  if bits(i)==1
    x((i-1)*n+1:i*n) = -lastbit;
    lastbit = -lastbit;
  else x((i-1)*n+1:i*n) = lastbit;
  end
end
x = (x + 1)*0.5;
plot(t, x, 'Linewidth', 3);
figure;
sigma = 0.5;
rauschen = sigma * randn(size(t));
plot(t,rauschen)
figure;
xr = x + rauschen;
plot(t,xr)
figure;
Xr = fft(xr);
f = linspace(0,1/t(2),length(t));
fc = n;
Xru = Xr;
Xru(find(f==fc)) = 0;
plot(f,abs(Xru));
figure;
ans = find(f==fc);
ans
Xru(ans:end-ans)=0;
plot(f,abs(Xru));
figure;
xru = ifft(Xru);
plot(t,real(xru));
hold
plot(t,x)
#axis([0 t(end) -0.5 1.5])

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.