问题描述:
matlab程序求解释……越详细越好……程序如下……若解释的令人满意,分大大地有赏……先上20分……
function y=pipei(x)
%构造发送信号波形
t1=0:100;
s01=-2+0*t1;s11=2+0*t1;
t2=100:200;
s02=2+0*t2;s12=-2+0*t2;
t3=200:1:400;
s03=0*t3;s13=0*t3;
t=[t1,t2,t3];
s0=[s01,s02,s03];
s1=[s11,s12,s13];
%匹配滤波器系统函数
h0=s1;
h1=s0;
%码元周期
Tb=200;
for i=1:length(x)
if(x(i)==1)
for j=1:Tb
d((i-1)* Tb+j)=1;
end
else
for j=1:Tb
d((i-1)* Tb+j)=0;
end
end;
end;
%对发送二进制信号进行波形映射
k=1;
for g=1:length(x)
if(x(g)==1)
y=s1;
else
y=s0;
end;
%叠加高斯白噪声,信噪比设为10dB
ynr=awgn(y,10,'measured');
%产生输出信号
r0=ifft(fft(ynr,512).*fft(h0,512),512);
r1=ifft(fft(ynr,512).*fft(h1,512),512);
tt=0:511;
figure(k);
subplot(211);
plot(t,y,'k',t,ynr,'g');
axis([0,400,-3,3]);
legend('发送波形','叠加高斯白噪声后波形');
subplot(212);
plot(tt,r0,'b',tt,r1,'r');
axis([0,400,-900,900]);
gtext('\leftarrow r0=conv(y,h0)');
gtext('\leftarrow r1=conv(y,h1)');
if r0(Tb)>r1(Tb)
m(k)=0;
else m(k)=1;
end;
k=k+1;
end;
for i=1:length(m)
if(m(i)==1)
for j=1:Tb
n((i-1)* Tb+j)=1;
end
else
for j=1:Tb
n((i-1)* Tb+j)=0;
end
end;
end;
figure(k);
subplot(211);
plot(d);
axis([0,length(d),-0.2,1.2]);
title('发送的二进制信号');
subplot(212);
plot(n);
axis([0,length(n),-0.2,1.2]);
title('接收判定后的二进制信号');
本人对matlab不太感冒,我专业走的也不是这个方向,我走的是单片机方向,并且matlab我们也没有学过……程序里面有些还是能稍微看的懂的……请大体的解释下程序,能解释多少算多少吧…… 能补全更好啊~
function y=pipei(x)
%构造发送信号波形
t1=0:100;
s01=-2+0*t1;s11=2+0*t1;
t2=100:200;
s02=2+0*t2;s12=-2+0*t2;
t3=200:1:400;
s03=0*t3;s13=0*t3;
t=[t1,t2,t3];
s0=[s01,s02,s03];
s1=[s11,s12,s13];
%匹配滤波器系统函数
h0=s1;
h1=s0;
%码元周期
Tb=200;
for i=1:length(x)
if(x(i)==1)
for j=1:Tb
d((i-1)* Tb+j)=1;
end
else
for j=1:Tb
d((i-1)* Tb+j)=0;
end
end;
end;
%对发送二进制信号进行波形映射
k=1;
for g=1:length(x)
if(x(g)==1)
y=s1;
else
y=s0;
end;
%叠加高斯白噪声,信噪比设为10dB
ynr=awgn(y,10,'measured');
%产生输出信号
r0=ifft(fft(ynr,512).*fft(h0,512),512);
r1=ifft(fft(ynr,512).*fft(h1,512),512);
tt=0:511;
figure(k);
subplot(211);
plot(t,y,'k',t,ynr,'g');
axis([0,400,-3,3]);
legend('发送波形','叠加高斯白噪声后波形');
subplot(212);
plot(tt,r0,'b',tt,r1,'r');
axis([0,400,-900,900]);
gtext('\leftarrow r0=conv(y,h0)');
gtext('\leftarrow r1=conv(y,h1)');
if r0(Tb)>r1(Tb)
m(k)=0;
else m(k)=1;
end;
k=k+1;
end;
for i=1:length(m)
if(m(i)==1)
for j=1:Tb
n((i-1)* Tb+j)=1;
end
else
for j=1:Tb
n((i-1)* Tb+j)=0;
end
end;
end;
figure(k);
subplot(211);
plot(d);
axis([0,length(d),-0.2,1.2]);
title('发送的二进制信号');
subplot(212);
plot(n);
axis([0,length(n),-0.2,1.2]);
title('接收判定后的二进制信号');
本人对matlab不太感冒,我专业走的也不是这个方向,我走的是单片机方向,并且matlab我们也没有学过……程序里面有些还是能稍微看的懂的……请大体的解释下程序,能解释多少算多少吧…… 能补全更好啊~
问题解答:
我来补答展开全文阅读